diff --git a/build.gradle b/build.gradle index e28dead..af82c85 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'org.springframework.boot' version '3.5.6' + id 'org.springframework.boot' version '4.0.0' id 'io.spring.dependency-management' version '1.1.7' id "com.github.ben-manes.versions" version "0.52.0" @@ -11,7 +11,7 @@ version = '1.0.1-SNAPSHOT' java { toolchain { - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) } } @@ -39,8 +39,8 @@ repositories { dependencies { // DigitalSanctuary Spring User Framework - implementation 'com.digitalsanctuary:ds-spring-user-framework:3.5.1' -l + implementation 'com.digitalsanctuary:ds-spring-user-framework:4.0.0' + // Spring Boot starters implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' @@ -51,8 +51,8 @@ l implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' - // Thymeleaf extras - implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.3.RELEASE' + // Thymeleaf extras - Spring Boot 4 manages the version + implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6' implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.4.0' // OpenAPI (Swagger) @@ -78,6 +78,9 @@ l // Testing dependencies testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.springframework.boot:spring-boot-data-jpa-test' + testImplementation 'org.springframework.boot:spring-boot-webmvc-test' + testImplementation 'org.springframework.boot:spring-boot-starter-security-test' testImplementation 'org.springframework.security:spring-security-test' testImplementation 'com.h2database:h2:2.3.232' testImplementation 'com.codeborne:selenide:7.10.0' @@ -112,9 +115,7 @@ tasks.register('uiTest', Test) { bootJar { - launchScript { - properties 'confFolder': '/opt/app/conf/' - } + // launchScript removed in Spring Boot 4 - use systemd or other init systems instead } bootRun { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 332c73d..c130f9b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -117,7 +117,7 @@ user: bcryptStrength: 12 # The bcrypt strength to use for password hashing. The higher the number, the longer it takes to hash the password. The default is 12. The minimum is 4. The maximum is 31. testHashTime: true # If true, the test hash time will be logged to the console on startup. This is useful for determining the optimal bcryptStrength value. defaultAction: deny # The default action for all requests. This can be either deny or allow. - unprotectedURIs: /,/index.html,/favicon.ico,/apple-touch-icon-precomposed.png,/css/*,/js/*,/js/user/*,/js/event/*,/img/**,/user/registration,/user/resendRegistrationToken,/user/resetPassword,/user/registrationConfirm,/user/changePassword,/user/savePassword,/oauth2/authorization/*,/login,/user/login,/user/login.html,/swagger-ui.html,/swagger-ui/**,/v3/api-docs/**,/event/,/event/list.html,/event/**,/about.html,error.htmla # A comma delimited list of URIs that should not be protected by Spring Security if the defaultAction is deny. + unprotectedURIs: /,/index.html,/favicon.ico,/apple-touch-icon-precomposed.png,/css/*,/js/*,/js/user/*,/js/event/*,/img/**,/user/registration,/user/resendRegistrationToken,/user/resetPassword,/user/registrationConfirm,/user/changePassword,/user/savePassword,/oauth2/authorization/*,/login,/user/login,/user/login.html,/swagger-ui.html,/swagger-ui/**,/v3/api-docs/**,/event/,/event/list.html,/event/**,/about.html,/error,/error.html # A comma delimited list of URIs that should not be protected by Spring Security if the defaultAction is deny. protectedURIs: /protected.html # A comma delimited list of URIs that should be protected by Spring Security if the defaultAction is allow. disableCSRFdURIs: /no-csrf-test # A comma delimited list of URIs that should not be protected by CSRF protection. This may include API endpoints that need to be called without a CSRF token. diff --git a/src/test/java/com/digitalsanctuary/spring/demo/DemoTests.java b/src/test/java/com/digitalsanctuary/spring/demo/DemoTests.java index 80842eb..13f5d07 100644 --- a/src/test/java/com/digitalsanctuary/spring/demo/DemoTests.java +++ b/src/test/java/com/digitalsanctuary/spring/demo/DemoTests.java @@ -1,7 +1,7 @@ package com.digitalsanctuary.spring.demo; import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.persistence.autoconfigure.EntityScan; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; diff --git a/src/test/java/com/digitalsanctuary/spring/demo/event/EventAPIControllerTest.java b/src/test/java/com/digitalsanctuary/spring/demo/event/EventAPIControllerTest.java index 3ec7772..546e9b6 100644 --- a/src/test/java/com/digitalsanctuary/spring/demo/event/EventAPIControllerTest.java +++ b/src/test/java/com/digitalsanctuary/spring/demo/event/EventAPIControllerTest.java @@ -24,7 +24,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.http.MediaType; import com.digitalsanctuary.spring.demo.SecurityTestUtils; @@ -53,8 +53,8 @@ public class EventAPIControllerTest { @MockitoBean private DemoSessionProfile demoSessionProfile; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper() + .registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); private Event testEvent; private List testEvents; diff --git a/src/test/java/com/digitalsanctuary/spring/demo/event/EventControllerTest.java b/src/test/java/com/digitalsanctuary/spring/demo/event/EventControllerTest.java index ba02d20..012fedf 100644 --- a/src/test/java/com/digitalsanctuary/spring/demo/event/EventControllerTest.java +++ b/src/test/java/com/digitalsanctuary/spring/demo/event/EventControllerTest.java @@ -14,7 +14,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.bean.override.mockito.MockitoBean; @@ -40,8 +40,8 @@ public class EventControllerTest { @MockitoBean private DemoUserProfileService demoUserProfileService; // Add this mock bean - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper() + .registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); private Event event; diff --git a/src/test/java/com/digitalsanctuary/spring/demo/event/EventRepositoryTest.java b/src/test/java/com/digitalsanctuary/spring/demo/event/EventRepositoryTest.java index de50e51..50ef55e 100644 --- a/src/test/java/com/digitalsanctuary/spring/demo/event/EventRepositoryTest.java +++ b/src/test/java/com/digitalsanctuary/spring/demo/event/EventRepositoryTest.java @@ -7,8 +7,8 @@ import java.util.Optional; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.persistence.autoconfigure.EntityScan; +import org.springframework.boot.data.jpa.test.autoconfigure.DataJpaTest; import org.springframework.test.context.ActiveProfiles; @ActiveProfiles("test") diff --git a/src/test/java/com/digitalsanctuary/spring/user/UserApplicationTests.java b/src/test/java/com/digitalsanctuary/spring/user/UserApplicationTests.java index e7dd806..d668a03 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/UserApplicationTests.java +++ b/src/test/java/com/digitalsanctuary/spring/user/UserApplicationTests.java @@ -1,6 +1,6 @@ package com.digitalsanctuary.spring.user; -import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.persistence.autoconfigure.EntityScan; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/ApiSecurityTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/ApiSecurityTest.java index d3a6e8c..00f67d6 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/ApiSecurityTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/ApiSecurityTest.java @@ -13,7 +13,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; @@ -52,8 +52,7 @@ class ApiSecurityTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/AuthenticatedUserApiTestSimplified.java b/src/test/java/com/digitalsanctuary/spring/user/api/AuthenticatedUserApiTestSimplified.java index f107db7..c8d8790 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/AuthenticatedUserApiTestSimplified.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/AuthenticatedUserApiTestSimplified.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Disabled; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.security.core.authority.SimpleGrantedAuthority; @@ -57,8 +57,7 @@ class AuthenticatedUserApiTestSimplified { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTest.java index 9adbd39..df85c71 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTest.java @@ -25,7 +25,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; @@ -67,8 +67,7 @@ class PasswordResetApiTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTestSimplified.java b/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTestSimplified.java index 5e5a171..9139e9b 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTestSimplified.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetApiTestSimplified.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; @@ -50,8 +50,7 @@ class PasswordResetApiTestSimplified { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetCompletionTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetCompletionTest.java index 8585d55..473071e 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetCompletionTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/PasswordResetCompletionTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.test.context.ActiveProfiles; @@ -49,8 +49,7 @@ class PasswordResetCompletionTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTest.java index c9784ad..0c3a5d5 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; @@ -56,8 +56,7 @@ class UserApiIntegrationTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTestFixed.java b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTestFixed.java index 52c9eab..6001f75 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTestFixed.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiIntegrationTestFixed.java @@ -9,7 +9,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; @@ -42,8 +42,7 @@ class UserApiIntegrationTestFixed { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiSimpleTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiSimpleTest.java index bc51a3b..d999e01 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiSimpleTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiSimpleTest.java @@ -10,7 +10,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.http.MediaType; @@ -47,8 +47,7 @@ class UserApiSimpleTest { @MockitoBean private MailService mailService; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @BeforeEach void setUp() { diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiTest.java index ade71aa..d03f7f0 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/UserApiTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/UserApiTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ArgumentsSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; @@ -63,8 +63,7 @@ public class UserApiTest { @Autowired private UserRepository userRepository; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @MockitoBean private com.digitalsanctuary.spring.user.mail.MailService mailService; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationComprehensiveTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationComprehensiveTest.java index 5724323..cf91b27 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationComprehensiveTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationComprehensiveTest.java @@ -16,7 +16,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.http.MediaType; @@ -56,8 +56,7 @@ class UserRegistrationComprehensiveTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationCoreTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationCoreTest.java index 3444641..ca3d59b 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationCoreTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationCoreTest.java @@ -10,7 +10,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Disabled; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.http.MediaType; @@ -47,8 +47,7 @@ class UserRegistrationCoreTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationEdgeCaseTest.java b/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationEdgeCaseTest.java index 7838530..5c9479c 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationEdgeCaseTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/api/UserRegistrationEdgeCaseTest.java @@ -16,7 +16,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; @@ -51,8 +51,7 @@ class UserRegistrationEdgeCaseTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + private ObjectMapper objectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()); @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminRoleAccessControlTest.java b/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminRoleAccessControlTest.java index 89b2d4e..c9e46b8 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminRoleAccessControlTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminRoleAccessControlTest.java @@ -10,7 +10,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; diff --git a/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminUserManagementTest.java b/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminUserManagementTest.java index fd32a63..f6c52dc 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminUserManagementTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/concurrent/AdminUserManagementTest.java @@ -12,7 +12,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; diff --git a/src/test/java/com/digitalsanctuary/spring/user/integration/AuthenticationIntegrationTest.java b/src/test/java/com/digitalsanctuary/spring/user/integration/AuthenticationIntegrationTest.java index 2d88a1b..d8bbf62 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/integration/AuthenticationIntegrationTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/integration/AuthenticationIntegrationTest.java @@ -19,7 +19,7 @@ import org.junit.jupiter.api.Disabled; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import org.springframework.transaction.annotation.Transactional; diff --git a/src/test/java/com/digitalsanctuary/spring/user/integration/SecurityConfigurationTest.java b/src/test/java/com/digitalsanctuary/spring/user/integration/SecurityConfigurationTest.java index 63680db..218aead 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/integration/SecurityConfigurationTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/integration/SecurityConfigurationTest.java @@ -5,7 +5,7 @@ import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.authenticated; import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.unauthenticated; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrlPattern; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.util.ArrayList; import java.util.Arrays; @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import org.springframework.transaction.annotation.Transactional; @@ -144,7 +144,7 @@ void logout_authenticatedUser_logsOut() throws Exception { @DisplayName("Should protect user update endpoints") void accessProtectedEndpoint_unauthenticated_redirectsToLogin() throws Exception { mockMvc.perform(get("/user/update-user.html")).andExpect(status().is3xxRedirection()) - .andExpect(redirectedUrlPattern("**/login**")); + .andExpect(redirectedUrl("/login.html")); } @Test diff --git a/src/test/java/com/digitalsanctuary/spring/user/oauth2/GoogleOAuth2IntegrationTest.java b/src/test/java/com/digitalsanctuary/spring/user/oauth2/GoogleOAuth2IntegrationTest.java index 4b185ad..59e750e 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/oauth2/GoogleOAuth2IntegrationTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/oauth2/GoogleOAuth2IntegrationTest.java @@ -21,7 +21,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; import org.springframework.mock.web.MockHttpSession; diff --git a/src/test/java/com/digitalsanctuary/spring/user/security/AccountLockoutIntegrationTest.java b/src/test/java/com/digitalsanctuary/spring/user/security/AccountLockoutIntegrationTest.java index 61d906b..4c23a74 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/security/AccountLockoutIntegrationTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/security/AccountLockoutIntegrationTest.java @@ -18,7 +18,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; diff --git a/src/test/java/com/digitalsanctuary/spring/user/security/AuditLoggingIntegrationTest.java b/src/test/java/com/digitalsanctuary/spring/user/security/AuditLoggingIntegrationTest.java index 4673470..394dede 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/security/AuditLoggingIntegrationTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/security/AuditLoggingIntegrationTest.java @@ -12,7 +12,7 @@ import org.junit.jupiter.api.Disabled; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.annotation.Bean; diff --git a/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseSimpleTest.java b/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseSimpleTest.java index 0a9ef45..78532f1 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseSimpleTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseSimpleTest.java @@ -10,7 +10,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Propagation; diff --git a/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseTest.java b/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseTest.java index 2c7ec37..76a61f3 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/security/EmailVerificationEdgeCaseTest.java @@ -22,7 +22,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; diff --git a/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTest.java b/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTest.java index 7cd8a39..2699f47 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTest.java +++ b/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTest.java @@ -1,7 +1,7 @@ package com.digitalsanctuary.spring.user.test.annotations; -import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.data.jpa.test.autoconfigure.AutoConfigureDataJpa; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; diff --git a/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTestNoTx.java b/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTestNoTx.java index 58120c5..4f42ebd 100644 --- a/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTestNoTx.java +++ b/src/test/java/com/digitalsanctuary/spring/user/test/annotations/IntegrationTestNoTx.java @@ -1,7 +1,7 @@ package com.digitalsanctuary.spring.user.test.annotations; -import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.data.jpa.test.autoconfigure.AutoConfigureDataJpa; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles;