From bc9034bbafd6141f096858587d1a6713c1542b85 Mon Sep 17 00:00:00 2001 From: Ram Date: Sun, 26 Jan 2025 18:48:32 +0100 Subject: [PATCH 1/3] feat: technical debt improvement - http security filter chan updated with permissionsPolicy to replace permissionsPolicyHeader --- .../journey/api/config/security/SecurityHeadersCustomizer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/nramc/dev/journey/api/config/security/SecurityHeadersCustomizer.java b/src/main/java/com/github/nramc/dev/journey/api/config/security/SecurityHeadersCustomizer.java index c0290d61..b3051128 100644 --- a/src/main/java/com/github/nramc/dev/journey/api/config/security/SecurityHeadersCustomizer.java +++ b/src/main/java/com/github/nramc/dev/journey/api/config/security/SecurityHeadersCustomizer.java @@ -13,7 +13,7 @@ public class SecurityHeadersCustomizer implements Customizer headersConfigurer) { - headersConfigurer.permissionsPolicy(permissions -> permissions.policy("accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(self),gamepad=(),geolocation=(),gyroscope=(),layout-animations=(self),legacy-image-formats=(self),magnetometer=(),microphone=(),midi=(),oversized-images=(self),payment=(),picture-in-picture=(),publickey-credentials-stats=(),speaker-selection=(),sync-xhr=(self),unoptimized-images=(self),unsized-media=(self),usb=(),screen-wake-lock=(),web-share=(),xr-spatial-tracking=()")); + headersConfigurer.permissionsPolicyHeader(permissions -> permissions.policy("accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(self),gamepad=(),geolocation=(),gyroscope=(),layout-animations=(self),legacy-image-formats=(self),magnetometer=(),microphone=(),midi=(),oversized-images=(self),payment=(),picture-in-picture=(),publickey-credentials-stats=(),speaker-selection=(),sync-xhr=(self),unoptimized-images=(self),unsized-media=(self),usb=(),screen-wake-lock=(),web-share=(),xr-spatial-tracking=()")); headersConfigurer.referrerPolicy(referrer -> referrer.policy(ReferrerPolicyHeaderWriter.ReferrerPolicy.NO_REFERRER)); From 0d38eb9e869e0334a340a3b468c9f7586a51c15f Mon Sep 17 00:00:00 2001 From: Ram Date: Sun, 26 Jan 2025 19:02:10 +0100 Subject: [PATCH 2/3] feat: technical debt improvement - http security filter chan updated with permissionsPolicy to replace permissionsPolicyHeader - @MockBean replaced with @MockitoBean --- .../registration/RegistrationUseCaseTest.java | 16 ++++++++-------- .../rest/auth/login/LoginResourceTest.java | 12 ++++++------ .../MultiFactorAuthenticationResourceTest.java | 8 ++++---- .../create/CreateJourneyResourceTest.java | 7 +++---- .../find/FindJourneyByIdResourceTest.java | 9 ++++----- .../UpdateJourneyBasicDetailsResourceTest.java | 11 +++++------ .../UpdateJourneyGeoDetailsResourceTest.java | 9 ++++----- .../publish/PublishJourneyResourceTest.java | 11 +++++------ .../UpdateJourneyVideosDetailsResourceTest.java | 11 +++++------ .../rest/users/find/FindUsersResourceTest.java | 9 ++++----- .../AccountRegistrationResourceTest.java | 6 +++--- .../code/EmailCodeVerificationResourceTest.java | 8 ++++---- .../SendEmailVerificationCodeResourceTest.java | 8 ++++---- .../attributes/totp/TotpResourceTest.java | 17 ++++++++--------- .../users/update/UpdateUserResourceTest.java | 15 +++++++-------- 15 files changed, 74 insertions(+), 83 deletions(-) diff --git a/src/test/java/com/github/nramc/dev/journey/api/core/usecase/registration/RegistrationUseCaseTest.java b/src/test/java/com/github/nramc/dev/journey/api/core/usecase/registration/RegistrationUseCaseTest.java index d73f684b..20f1cda2 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/core/usecase/registration/RegistrationUseCaseTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/core/usecase/registration/RegistrationUseCaseTest.java @@ -12,11 +12,11 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.provisioning.UserDetailsManager; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.time.LocalDateTime; @@ -39,15 +39,15 @@ class RegistrationUseCaseTest { .roles(Set.of(Role.AUTHENTICATED_USER)) .build(); @Autowired - private UserDetailsManager userDetailsManager; + UserDetailsManager userDetailsManager; @Autowired - private Validator validator; + Validator validator; @Autowired - private PasswordEncoder passwordEncoder; - @MockBean - private AccountActivationUseCase accountActivationUseCase; - @MockBean - private EmailNotificationUseCase emailNotificationUseCase; + PasswordEncoder passwordEncoder; + @MockitoBean + AccountActivationUseCase accountActivationUseCase; + @MockitoBean + EmailNotificationUseCase emailNotificationUseCase; private RegistrationUseCase registrationUseCase; diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/login/LoginResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/login/LoginResourceTest.java index dcd2e280..3d6a5af2 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/login/LoginResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/login/LoginResourceTest.java @@ -1,8 +1,8 @@ package com.github.nramc.dev.journey.api.web.resources.rest.auth.login; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.InMemoryUserDetailsConfig; +import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.WithMockAuthenticatedUser; import com.github.nramc.dev.journey.api.core.jwt.JwtGenerator; import com.github.nramc.dev.journey.api.core.jwt.JwtProperties; @@ -14,10 +14,10 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.autoconfigure.json.AutoConfigureJson; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -47,11 +47,11 @@ @AutoConfigureJson class LoginResourceTest { @Autowired - private MockMvc mockMvc; + MockMvc mockMvc; @Autowired - private ObjectMapper objectMapper; - @MockBean - private UserSecurityAttributeService attributeService; + ObjectMapper objectMapper; + @MockitoBean + UserSecurityAttributeService attributeService; @Test void test() { diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/mfa/MultiFactorAuthenticationResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/mfa/MultiFactorAuthenticationResourceTest.java index d22930de..6008b956 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/mfa/MultiFactorAuthenticationResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/auth/mfa/MultiFactorAuthenticationResourceTest.java @@ -12,10 +12,10 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.autoconfigure.json.AutoConfigureJson; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -49,9 +49,9 @@ class MultiFactorAuthenticationResourceTest { "value": "%s" }"""; @Autowired - private MockMvc mockMvc; - @MockBean - private ConfirmationCodeUseCase confirmationCodeUseCase; + MockMvc mockMvc; + @MockitoBean + ConfirmationCodeUseCase confirmationCodeUseCase; @Test void test() { diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/create/CreateJourneyResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/create/CreateJourneyResourceTest.java index 4bddedb6..b9feb7fe 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/create/CreateJourneyResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/create/CreateJourneyResourceTest.java @@ -11,11 +11,11 @@ import org.junit.jupiter.params.provider.ValueSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -36,12 +36,11 @@ @WebMvcTest(CreateJourneyResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({JourneyRepository.class}) class CreateJourneyResourceTest { @Autowired private MockMvc mockMvc; - @Autowired - private JourneyRepository journeyRepository; + @MockitoBean + JourneyRepository journeyRepository; @BeforeEach void setup() { diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/find/FindJourneyByIdResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/find/FindJourneyByIdResourceTest.java index 9f5bd56b..2e5a917b 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/find/FindJourneyByIdResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/find/FindJourneyByIdResourceTest.java @@ -10,11 +10,11 @@ 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -34,12 +34,11 @@ @WebMvcTest(FindJourneyByIdResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({JourneyRepository.class}) class FindJourneyByIdResourceTest { @Autowired - private MockMvc mockMvc; - @Autowired - private JourneyRepository journeyRepository; + MockMvc mockMvc; + @MockitoBean + JourneyRepository journeyRepository; @Test @WithMockAuthenticatedUser diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/basic/UpdateJourneyBasicDetailsResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/basic/UpdateJourneyBasicDetailsResourceTest.java index ffd8f0ca..85781bfb 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/basic/UpdateJourneyBasicDetailsResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/basic/UpdateJourneyBasicDetailsResourceTest.java @@ -1,7 +1,7 @@ package com.github.nramc.dev.journey.api.web.resources.rest.journeys.update.basic; -import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.InMemoryUserDetailsConfig; +import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.WithMockAuthenticatedUser; import com.github.nramc.dev.journey.api.config.security.WithMockGuestUser; import com.github.nramc.dev.journey.api.repository.journey.JourneyRepository; @@ -9,12 +9,12 @@ 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultMatcher; @@ -36,7 +36,6 @@ @WebMvcTest(UpdateJourneyBasicDetailsResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({JourneyRepository.class}) class UpdateJourneyBasicDetailsResourceTest { private static final String VALID_REQUEST = """ { @@ -52,9 +51,9 @@ class UpdateJourneyBasicDetailsResourceTest { content().contentType(MediaType.APPLICATION_JSON) }; @Autowired - private MockMvc mockMvc; - @Autowired - private JourneyRepository journeyRepository; + MockMvc mockMvc; + @MockitoBean + JourneyRepository journeyRepository; @Test @WithMockAuthenticatedUser diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/geo/UpdateJourneyGeoDetailsResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/geo/UpdateJourneyGeoDetailsResourceTest.java index 14942494..9f1afc08 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/geo/UpdateJourneyGeoDetailsResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/geo/UpdateJourneyGeoDetailsResourceTest.java @@ -9,12 +9,12 @@ 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultMatcher; @@ -37,16 +37,15 @@ @WebMvcTest(UpdateJourneyGeoDetailsResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({JourneyRepository.class}) class UpdateJourneyGeoDetailsResourceTest { private static final ResultMatcher[] STATUS_AND_CONTENT_TYPE_MATCH = new ResultMatcher[]{ status().isOk(), content().contentType(MediaType.APPLICATION_JSON) }; @Autowired - private MockMvc mockMvc; - @Autowired - private JourneyRepository journeyRepository; + MockMvc mockMvc; + @MockitoBean + JourneyRepository journeyRepository; @Test @WithMockAuthenticatedUser diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/publish/PublishJourneyResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/publish/PublishJourneyResourceTest.java index 9c22d7f2..6f59e176 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/publish/PublishJourneyResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/publish/PublishJourneyResourceTest.java @@ -17,12 +17,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultMatcher; @@ -45,7 +45,6 @@ @WebMvcTest(PublishJourneyResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class, ValidationAutoConfiguration.class, JourneyValidator.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({JourneyRepository.class}) class PublishJourneyResourceTest { private static final JourneyEntity JOURNEY_ENTITY = JourneyData.JOURNEY_ENTITY.toBuilder().build(); private static final ResultMatcher[] STATUS_AND_CONTENT_TYPE_MATCH = new ResultMatcher[]{ @@ -64,11 +63,11 @@ class PublishJourneyResourceTest { }; private static final Set DEFAULT_VISIBILITY = Set.of(MYSELF); @Autowired - private MockMvc mockMvc; + MockMvc mockMvc; + @MockitoBean + JourneyRepository journeyRepository; @Autowired - private JourneyRepository journeyRepository; - @Autowired - private ObjectMapper objectMapper; + ObjectMapper objectMapper; static Stream validJourneyDataProvider() { diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/videos/UpdateJourneyVideosDetailsResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/videos/UpdateJourneyVideosDetailsResourceTest.java index 3580fc79..f10034ac 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/videos/UpdateJourneyVideosDetailsResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/journeys/update/videos/UpdateJourneyVideosDetailsResourceTest.java @@ -1,7 +1,7 @@ package com.github.nramc.dev.journey.api.web.resources.rest.journeys.update.videos; -import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.InMemoryUserDetailsConfig; +import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.WithMockAuthenticatedUser; import com.github.nramc.dev.journey.api.config.security.WithMockGuestUser; import com.github.nramc.dev.journey.api.repository.journey.JourneyRepository; @@ -9,12 +9,12 @@ 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultMatcher; @@ -34,7 +34,6 @@ @WebMvcTest(UpdateJourneyVideosDetailsResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({JourneyRepository.class}) class UpdateJourneyVideosDetailsResourceTest { private static final ResultMatcher[] STATUS_AND_CONTENT_TYPE_MATCH = new ResultMatcher[]{ status().isOk(), @@ -52,9 +51,9 @@ class UpdateJourneyVideosDetailsResourceTest { }; @Autowired - private MockMvc mockMvc; - @Autowired - private JourneyRepository journeyRepository; + MockMvc mockMvc; + @MockitoBean + JourneyRepository journeyRepository; @Test @WithMockAuthenticatedUser diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/find/FindUsersResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/find/FindUsersResourceTest.java index d6ff573e..42771881 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/find/FindUsersResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/find/FindUsersResourceTest.java @@ -1,7 +1,7 @@ package com.github.nramc.dev.journey.api.web.resources.rest.users.find; -import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.InMemoryUserDetailsConfig; +import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.WithMockAdministratorUser; import com.github.nramc.dev.journey.api.config.security.WithMockAuthenticatedUser; import com.github.nramc.dev.journey.api.config.security.WithMockGuestUser; @@ -10,12 +10,12 @@ 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -37,11 +37,10 @@ @WebMvcTest(FindUsersResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({UserRepository.class}) class FindUsersResourceTest { @Autowired - private MockMvc mockMvc; - @Autowired + MockMvc mockMvc; + @MockitoBean UserRepository userRepository; @Test diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/registration/AccountRegistrationResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/registration/AccountRegistrationResourceTest.java index 98c418a4..56d751e5 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/registration/AccountRegistrationResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/registration/AccountRegistrationResourceTest.java @@ -1,7 +1,7 @@ package com.github.nramc.dev.journey.api.web.resources.rest.users.registration; -import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.InMemoryUserDetailsConfig; +import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.core.usecase.registration.AccountActivationUseCase; import com.github.nramc.dev.journey.api.core.usecase.registration.RegistrationUseCase; import org.junit.jupiter.api.Test; @@ -10,10 +10,10 @@ import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -29,7 +29,7 @@ @WebMvcTest(controllers = {AccountRegistrationResource.class}) @Import({InMemoryUserDetailsConfig.class, WebSecurityConfig.class}) @ActiveProfiles({"test"}) -@MockBean({RegistrationUseCase.class, AccountActivationUseCase.class}) +@MockitoBean(types = {RegistrationUseCase.class, AccountActivationUseCase.class}) class AccountRegistrationResourceTest { private static final String SIGNUP_REQUEST_TEMPLATE = """ { diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/EmailCodeVerificationResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/EmailCodeVerificationResourceTest.java index 5ada6710..1dc88695 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/EmailCodeVerificationResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/EmailCodeVerificationResourceTest.java @@ -10,10 +10,10 @@ 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -33,9 +33,9 @@ class EmailCodeVerificationResourceTest { { "code": "123456" } """; @Autowired - private MockMvc mvc; - @MockBean - private EmailCodeUseCase emailCodeUseCase; + MockMvc mvc; + @MockitoBean + EmailCodeUseCase emailCodeUseCase; @Test @WithMockAuthenticatedUser diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/SendEmailVerificationCodeResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/SendEmailVerificationCodeResourceTest.java index b93e6eeb..c52ab511 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/SendEmailVerificationCodeResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/email/code/SendEmailVerificationCodeResourceTest.java @@ -8,11 +8,11 @@ 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -28,9 +28,9 @@ @ActiveProfiles({"prod", "test"}) class SendEmailVerificationCodeResourceTest { @Autowired - private MockMvc mvc; - @MockBean - private EmailCodeUseCase emailCodeUseCase; + MockMvc mvc; + @MockitoBean + EmailCodeUseCase emailCodeUseCase; @Test @WithMockAuthenticatedUser diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/totp/TotpResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/totp/TotpResourceTest.java index 2d9c7cf9..b040efd8 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/totp/TotpResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/security/attributes/totp/TotpResourceTest.java @@ -1,23 +1,23 @@ package com.github.nramc.dev.journey.api.web.resources.rest.users.security.attributes.totp; -import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.InMemoryUserDetailsConfig; +import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.WithMockAuthenticatedUser; import com.github.nramc.dev.journey.api.config.security.WithMockGuestUser; -import com.github.nramc.dev.journey.api.core.usecase.codes.totp.QRImageDetails; -import com.github.nramc.dev.journey.api.core.usecase.codes.totp.TotpUseCase; -import com.github.nramc.dev.journey.api.repository.user.AuthUser; import com.github.nramc.dev.journey.api.core.domain.user.UserSecurityAttribute; import com.github.nramc.dev.journey.api.core.exceptions.BusinessException; import com.github.nramc.dev.journey.api.core.usecase.codes.TotpCode; +import com.github.nramc.dev.journey.api.core.usecase.codes.totp.QRImageDetails; +import com.github.nramc.dev.journey.api.core.usecase.codes.totp.TotpUseCase; +import com.github.nramc.dev.journey.api.repository.user.AuthUser; import org.hamcrest.Matchers; 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.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import java.util.Optional; @@ -40,7 +40,6 @@ @WebMvcTest(TotpResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({TotpUseCase.class}) class TotpResourceTest { private static final String SECRET_KEY = "E6DCVTM46CLPRXOE6NNNXCPWAIR3L5QZss"; private static final String TOTP_CODE = "123456"; @@ -54,9 +53,9 @@ class TotpResourceTest { { "code": "%s" } """; @Autowired - private MockMvc mockMvc; - @Autowired - private TotpUseCase totpUseCase; + MockMvc mockMvc; + @MockitoBean + TotpUseCase totpUseCase; @Test void context() { diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/update/UpdateUserResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/update/UpdateUserResourceTest.java index 52fff68a..2bbd38da 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/update/UpdateUserResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/update/UpdateUserResourceTest.java @@ -12,12 +12,12 @@ 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.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.security.provisioning.UserDetailsManager; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.springframework.test.web.servlet.MockMvc; import java.util.List; @@ -36,7 +36,6 @@ @WebMvcTest(UpdateUserResource.class) @Import({WebSecurityConfig.class, InMemoryUserDetailsConfig.class}) @ActiveProfiles({"prod", "test"}) -@MockBean({UserSecurityAttributeService.class}) class UpdateUserResourceTest { private static final String UPDATE_USER_REQUEST_TEMPLATE = """ { @@ -47,11 +46,11 @@ class UpdateUserResourceTest { "status": "%s" }"""; @Autowired - private MockMvc mockMvc; - @Autowired - private UserSecurityAttributeService attributeService; - @SpyBean - private UserDetailsManager userDetailsManager; + MockMvc mockMvc; + @MockitoBean + UserSecurityAttributeService attributeService; + @MockitoSpyBean + UserDetailsManager userDetailsManager; @Test void context() { From 68b10954ae29e0605f76342ae9a6093ca54abc0f Mon Sep 17 00:00:00 2001 From: Ram Date: Sun, 26 Jan 2025 19:05:23 +0100 Subject: [PATCH 3/3] feat: technical debt improvement - http security filter chan updated with permissionsPolicy to replace permissionsPolicyHeader - @MockBean replaced with @MockitoBean - @SpyBean replaced with @MockitoSpyBean --- .../nramc/dev/journey/api/gateway/MailServiceTest.java | 8 ++++---- .../rest/users/delete/DeleteUserResourceTest.java | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/github/nramc/dev/journey/api/gateway/MailServiceTest.java b/src/test/java/com/github/nramc/dev/journey/api/gateway/MailServiceTest.java index d773352d..93344eea 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/gateway/MailServiceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/gateway/MailServiceTest.java @@ -12,12 +12,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.junit.jupiter.Container; @@ -53,10 +53,10 @@ static void configureMail(DynamicPropertyRegistry registry) { } @Autowired - private MailService mailService; + MailService mailService; - @SpyBean - private JavaMailSender emailSender; + @MockitoSpyBean + JavaMailSender emailSender; @Test void context() { diff --git a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/delete/DeleteUserResourceTest.java b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/delete/DeleteUserResourceTest.java index e4d8a7c1..03e6b5de 100644 --- a/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/delete/DeleteUserResourceTest.java +++ b/src/test/java/com/github/nramc/dev/journey/api/web/resources/rest/users/delete/DeleteUserResourceTest.java @@ -1,7 +1,7 @@ package com.github.nramc.dev.journey.api.web.resources.rest.users.delete; -import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.InMemoryUserDetailsConfig; +import com.github.nramc.dev.journey.api.config.security.WebSecurityConfig; import com.github.nramc.dev.journey.api.config.security.WithMockAdministratorUser; import com.github.nramc.dev.journey.api.config.security.WithMockAuthenticatedUser; import com.github.nramc.dev.journey.api.config.security.WithMockGuestUser; @@ -10,12 +10,12 @@ 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.test.mock.mockito.SpyBean; import org.springframework.context.annotation.Import; import org.springframework.security.provisioning.UserDetailsManager; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.springframework.test.web.servlet.MockMvc; import static com.github.nramc.dev.journey.api.core.domain.user.Role.Constants.AUTHENTICATED_USER; @@ -36,9 +36,9 @@ @ActiveProfiles({"prod", "test"}) class DeleteUserResourceTest { @Autowired - private MockMvc mockMvc; - @SpyBean - private UserDetailsManager userDetailsManager; + MockMvc mockMvc; + @MockitoSpyBean + UserDetailsManager userDetailsManager; @Test void context() {