diff --git a/iam-login-service/src/main/java/it/infn/mw/iam/config/security/IamTokenEndointSecurityConfig.java b/iam-login-service/src/main/java/it/infn/mw/iam/config/security/IamTokenEndointSecurityConfig.java index d57eae0a9..6ad31fdec 100644 --- a/iam-login-service/src/main/java/it/infn/mw/iam/config/security/IamTokenEndointSecurityConfig.java +++ b/iam-login-service/src/main/java/it/infn/mw/iam/config/security/IamTokenEndointSecurityConfig.java @@ -74,6 +74,7 @@ protected void configure(AuthenticationManagerBuilder auth) throws Exception { public ClientCredentialsTokenEndpointFilter ccFilter() throws Exception { ClientCredentialsTokenEndpointFilter filter = new ClientCredentialsTokenEndpointFilter(TOKEN_ENDPOINT); + filter.setAllowOnlyPost(true); filter.setAuthenticationManager(authenticationManager()); return filter; } @@ -108,7 +109,7 @@ protected void configure(HttpSecurity http) throws Exception { .antMatchers(TOKEN_ENDPOINT).authenticated() .and() .addFilterBefore(jwtBearerFilter(), AbstractPreAuthenticatedProcessingFilter.class) - .addFilterBefore(ccFilter(), BasicAuthenticationFilter.class) + .addFilterAfter(ccFilter(), BasicAuthenticationFilter.class) .exceptionHandling() .authenticationEntryPoint(authenticationEntryPoint) .accessDeniedHandler(new OAuth2AccessDeniedHandler()) diff --git a/iam-login-service/src/main/resources-filtered/application.properties b/iam-login-service/src/main/resources-filtered/application.properties index 58379cd93..ef8f07055 100644 --- a/iam-login-service/src/main/resources-filtered/application.properties +++ b/iam-login-service/src/main/resources-filtered/application.properties @@ -33,7 +33,6 @@ logging.level.org.opensaml.saml2.metadata.provider=INFO #logging.level.=DEBUG #logging.level.root=DEBUG - # Velocity logging (only used for SAML templates) # logging.level.org.apache.velocity==TRACE @@ -48,7 +47,7 @@ logging.level.org.opensaml.saml2.metadata.provider=INFO # Notification service logging #logging.level.it.infn.mw.iam.notification=DEBUG -#logging.level.org.springframework.security=DEBUG +# logging.level.org.springframework.security=DEBUG #logging.level.org.springframework.web=DEBUG # logging.level.com.fasterxml.jackson=INFO diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/model/OrphanTokensTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/model/OrphanTokensTests.java index 998e5cd77..5457ca9b3 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/model/OrphanTokensTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/model/OrphanTokensTests.java @@ -22,21 +22,15 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.persistence.repository.IamOAuthAccessTokenRepository; import it.infn.mw.iam.persistence.repository.IamOAuthRefreshTokenRepository; import it.infn.mw.iam.test.api.tokens.TestTokensUtils; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest public class OrphanTokensTests extends TestTokensUtils { @Autowired diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/NotificationDisabledTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/NotificationDisabledTests.java index 370742aad..887a87059 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/NotificationDisabledTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/NotificationDisabledTests.java @@ -17,9 +17,7 @@ import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertThat; -import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.io.UnsupportedEncodingException; @@ -30,15 +28,12 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.MediaType; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.WebApplicationContext; import com.fasterxml.jackson.databind.ObjectMapper; @@ -47,13 +42,14 @@ import it.infn.mw.iam.persistence.repository.IamAccountRepository; import it.infn.mw.iam.registration.RegistrationRequestDto; import it.infn.mw.iam.test.core.CoreControllerTestSupport; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.notification.MockNotificationDelivery; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, NotificationTestConfig.class, CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest +@SpringBootTest(classes = {IamLoginService.class, CoreControllerTestSupport.class, + NotificationTestConfig.class}, webEnvironment = WebEnvironment.MOCK) @TestPropertySource(properties = {"notification.disable=true"}) public class NotificationDisabledTests { @@ -71,24 +67,18 @@ public class NotificationDisabledTests { @Autowired ObjectMapper mapper; - @Autowired - private WebApplicationContext context; - @Autowired private IamAccountRepository accountRepository; @Autowired private MockOAuth2Filter mockOAuth2Filter; + @Autowired private MockMvc mvc; @Before public void setUp() throws InterruptedException { mockOAuth2Filter.cleanupSecurityContext(); - mvc = MockMvcBuilders.webAppContextSetup(context) - .apply(springSecurity()) - .alwaysDo(log()) - .build(); notificationDelivery.clearDeliveredNotifications(); } @@ -99,7 +89,6 @@ public void tearDown() throws InterruptedException { } - @Test public void testDisableNotificationOption() throws UnsupportedEncodingException, Exception { RegistrationRequestDto req = new RegistrationRequestDto(); diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowFailTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowFailTests.java index e428194c1..724502acc 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowFailTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowFailTests.java @@ -28,14 +28,13 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.MediaType; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.util.NestedServletException; @@ -45,14 +44,14 @@ import it.infn.mw.iam.registration.RegistrationRequestDto; import it.infn.mw.iam.test.core.CoreControllerTestSupport; import it.infn.mw.iam.test.util.WithAnonymousUser; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.notification.MockNotificationDelivery; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, NotificationTestConfig.class, - CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest +@SpringBootTest(classes = {IamLoginService.class, CoreControllerTestSupport.class, + NotificationTestConfig.class}, webEnvironment = WebEnvironment.MOCK) @WithAnonymousUser @TestPropertySource( properties = {"notification.disable=false", "spring.freemarker.template-loader-path=/invalid/"}) diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowNotificationTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowNotificationTests.java index 397853d12..3153f6865 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowNotificationTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/notification/RegistrationFlowNotificationTests.java @@ -35,15 +35,14 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.MediaType; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.WebApplicationContext; import com.fasterxml.jackson.databind.ObjectMapper; @@ -55,14 +54,14 @@ import it.infn.mw.iam.registration.RegistrationRequestDto; import it.infn.mw.iam.test.core.CoreControllerTestSupport; import it.infn.mw.iam.test.util.WithAnonymousUser; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.notification.MockNotificationDelivery; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, NotificationTestConfig.class, - CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest +@SpringBootTest(classes = {IamLoginService.class, CoreControllerTestSupport.class, + NotificationTestConfig.class}, webEnvironment = WebEnvironment.MOCK) @WithAnonymousUser @TestPropertySource(properties = {"notification.disable=false"}) public class RegistrationFlowNotificationTests { diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/EndpointsTestUtils.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/EndpointsTestUtils.java index 0dfea589f..805b0f585 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/EndpointsTestUtils.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/EndpointsTestUtils.java @@ -16,17 +16,13 @@ package it.infn.mw.iam.test.oauth; import static com.google.common.base.Strings.isNullOrEmpty; -import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.web.context.WebApplicationContext; import com.fasterxml.jackson.databind.ObjectMapper; @@ -38,20 +34,12 @@ public class EndpointsTestUtils { private static final String DEFAULT_CLIENT_SECRET = "secret"; private static final String DEFAULT_SCOPE = ""; - @Autowired protected ObjectMapper mapper; @Autowired - protected WebApplicationContext context; - protected MockMvc mvc; - protected void buildMockMvc() { - mvc = - MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).alwaysDo(log()).build(); - } - public AccessTokenGetter buildAccessTokenGetter() { return new AccessTokenGetter().grantType("password") .clientId(DEFAULT_CLIENT_ID) diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/assertion/JWTBearerClientAuthenticationIntegrationTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/assertion/JWTBearerClientAuthenticationIntegrationTests.java index e0d0fdaaf..0d15971a4 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/assertion/JWTBearerClientAuthenticationIntegrationTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/assertion/JWTBearerClientAuthenticationIntegrationTests.java @@ -24,14 +24,10 @@ import java.util.Date; import java.util.UUID; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mitre.jwt.signer.service.JWTSigningAndValidationService; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; import com.nimbusds.jose.JWSAlgorithm; import com.nimbusds.jose.JWSHeader; @@ -39,20 +35,12 @@ import com.nimbusds.jwt.JWTClaimsSet; import com.nimbusds.jwt.SignedJWT; -import it.infn.mw.iam.IamLoginService; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional -public class JWTBearerClientAuthenticationIntegrationTests extends JWTBearerClientAuthenticationIntegrationTestSupport { - - - @Before - public void setup() throws Exception { - buildMockMvc(); - } +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest +public class JWTBearerClientAuthenticationIntegrationTests + extends JWTBearerClientAuthenticationIntegrationTestSupport { @Test public void testSymmetricJwtAuth() throws Exception { @@ -74,14 +62,14 @@ public void testAsymmetricJwtAuth() throws Exception { JWTSigningAndValidationService signer = loadSignerService(); JWTClaimsSet claimsSet = new JWTClaimsSet.Builder().subject(CLIENT_ID_PRIVATE_KEY_JWT) - .issuer(CLIENT_ID_PRIVATE_KEY_JWT) - .expirationTime(Date.from(Instant.now().plusSeconds(600))) - .audience(singletonList(TOKEN_ENDPOINT_AUDIENCE)) - .jwtID(UUID.randomUUID().toString()) - .build(); - + .issuer(CLIENT_ID_PRIVATE_KEY_JWT) + .expirationTime(Date.from(Instant.now().plusSeconds(600))) + .audience(singletonList(TOKEN_ENDPOINT_AUDIENCE)) + .jwtID(UUID.randomUUID().toString()) + .build(); + JWSHeader header = new JWSHeader.Builder(JWSAlgorithm.RS256).keyID("rsa1").build(); - + SignedJWT jwt = new SignedJWT(header, claimsSet); signer.signJwt(jwt); String serializedToken = jwt.serialize(); diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/attributes/AttributeOAuthEncodingTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/attributes/AttributeOAuthEncodingTests.java index e87b6b036..da7b88afb 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/attributes/AttributeOAuthEncodingTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/attributes/AttributeOAuthEncodingTests.java @@ -27,28 +27,22 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; import com.nimbusds.jwt.JWT; import com.nimbusds.jwt.JWTParser; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.core.user.IamAccountService; import it.infn.mw.iam.persistence.model.IamAccount; import it.infn.mw.iam.persistence.model.IamAttribute; import it.infn.mw.iam.persistence.repository.IamAccountRepository; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @TestPropertySource(properties = {"iam.access_token.include_authn_info=true"}) public class AttributeOAuthEncodingTests extends EndpointsTestUtils { @@ -72,7 +66,6 @@ private Supplier assertionError(String message) { @Before public void setup() { - buildMockMvc(); mockOAuth2Filter.cleanupSecurityContext(); } diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/ExchangePolicyApiIntegrationTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/ExchangePolicyApiIntegrationTests.java index 2050bf084..1549c8ca8 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/ExchangePolicyApiIntegrationTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/ExchangePolicyApiIntegrationTests.java @@ -24,11 +24,9 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.springframework.http.MediaType.APPLICATION_JSON; -import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -39,21 +37,15 @@ import org.junit.runner.RunWith; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.WebApplicationContext; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.api.exchange_policy.ClientMatchingPolicyDTO; import it.infn.mw.iam.api.exchange_policy.ExchangePolicyDTO; import it.infn.mw.iam.api.exchange_policy.ExchangeScopePolicyDTO; @@ -63,21 +55,17 @@ import it.infn.mw.iam.persistence.model.IamScopePolicy.MatchingPolicy; import it.infn.mw.iam.persistence.model.PolicyRule; import it.infn.mw.iam.persistence.repository.IamTokenExchangePolicyRepository; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; -import it.infn.mw.iam.test.oauth.exchange.ExchangePolicyApiIntegrationTests.TestBeans; import it.infn.mw.iam.test.util.WithAnonymousUser; import it.infn.mw.iam.test.util.WithMockOAuthUser; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration( - classes = {IamLoginService.class, CoreControllerTestSupport.class, TestBeans.class}) -@WebAppConfiguration -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @WithAnonymousUser public class ExchangePolicyApiIntegrationTests { - @Configuration + @TestConfiguration public static class TestBeans { @Bean @Primary @@ -90,9 +78,6 @@ public TokenExchangePdp tokenExchangePdp(IamTokenExchangePolicyRepository repo, public static final String ENDPOINT = "/iam/api/exchange/policies"; - @Autowired - private WebApplicationContext context; - @Autowired MockOAuth2Filter filter; @@ -105,15 +90,18 @@ public TokenExchangePdp tokenExchangePdp(IamTokenExchangePolicyRepository repo, @Autowired TokenExchangePdp pdp; + @Autowired private MockMvc mvc; @Before public void setup() throws Exception { - mvc = - MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).alwaysDo(log()).build(); reset(pdp); } + @After + public void cleanupOAuthUser() { + filter.cleanupSecurityContext(); + } protected ExchangePolicyDTO denyAllExchangesPolicy() { ExchangePolicyDTO policy = ExchangePolicyDTO.denyPolicy("Deny all exchanges"); @@ -122,12 +110,6 @@ protected ExchangePolicyDTO denyAllExchangesPolicy() { return policy; } - @After - public void cleanupOAuthUser() { - filter.cleanupSecurityContext(); - } - - @Test public void listPoliciesRequiresAuthenticatedUser() throws Exception { mvc.perform(get(ENDPOINT)).andExpect(status().isUnauthorized()); diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/TokenExchangeWithPdpIntegrationTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/TokenExchangeWithPdpIntegrationTests.java index fc9e5e447..ea3853dc3 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/TokenExchangeWithPdpIntegrationTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/exchange/TokenExchangeWithPdpIntegrationTests.java @@ -16,38 +16,33 @@ package it.infn.mw.iam.test.oauth.exchange; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; -import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.WebApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.api.exchange_policy.ClientMatchingPolicyDTO; import it.infn.mw.iam.api.exchange_policy.ExchangePolicyDTO; -import it.infn.mw.iam.api.exchange_policy.TokenExchangePolicyService; import it.infn.mw.iam.api.exchange_policy.ExchangeScopePolicyDTO; +import it.infn.mw.iam.api.exchange_policy.TokenExchangePolicyService; import it.infn.mw.iam.persistence.model.IamScopePolicy.MatchingPolicy; import it.infn.mw.iam.persistence.model.PolicyRule; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; + -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = IamLoginService.class) -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest +@SpringBootTest(classes = {IamLoginService.class}, webEnvironment = WebEnvironment.MOCK) @DirtiesContext -@WebAppConfiguration public class TokenExchangeWithPdpIntegrationTests extends EndpointsTestUtils { private static final String TOKEN_EXCHANGE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange"; @@ -57,20 +52,9 @@ public class TokenExchangeWithPdpIntegrationTests extends EndpointsTestUtils { private static final String TEST_USER_USERNAME = "test"; private static final String TEST_USER_PASSWORD = "password"; - - @Autowired - private WebApplicationContext context; - @Autowired private TokenExchangePolicyService service; - @Before - public void setup() throws Exception { - mvc = - MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).alwaysDo(log()).build(); - } - - @Test public void testTokenExchangeBlockedWithNoPolicy() throws Exception { String clientId = "token-exchange-subject"; diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKCacheSetServiceTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKCacheSetServiceTests.java index e372ebad5..01a3b7ad3 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKCacheSetServiceTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKCacheSetServiceTests.java @@ -28,16 +28,16 @@ import org.junit.runner.RunWith; import org.mitre.jwt.signer.service.impl.JWKSetCacheService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; import org.springframework.core.io.ClassPathResource; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.client.response.MockRestResponseCreators; -import org.springframework.transaction.annotation.Transactional; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -45,22 +45,25 @@ import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.authn.oidc.RestTemplateFactory; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.oidc.MockRestTemplateFactory; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, JWKCacheSetServiceTests.class}) -@WebAppConfiguration -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest +@SpringBootTest(classes = {IamLoginService.class}, webEnvironment = WebEnvironment.MOCK) public class JWKCacheSetServiceTests { public static final String JWK_URL = "https://iam.example/jwk"; public static final String JKS_PATH = "oidc/mock_jwk.jks"; - @Bean - @Primary - public RestTemplateFactory mockRestTemplateFactory() { - return new MockRestTemplateFactory(); + @TestConfiguration + public static class TestConfig { + @Bean + @Primary + public RestTemplateFactory mockRestTemplateFactory() { + return new MockRestTemplateFactory(); + } } @Autowired diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKDefaultKeyTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKDefaultKeyTests.java index 350024a77..f8a7c40e8 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKDefaultKeyTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKDefaultKeyTests.java @@ -26,35 +26,25 @@ import java.text.ParseException; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.http.MediaType; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; import com.nimbusds.jwt.JWTParser; import com.nimbusds.jwt.SignedJWT; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = IamLoginService.class) -@WebAppConfiguration -@Transactional + +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @TestPropertySource(properties = {"iam.jwk.default-key-id=iam1", "iam.jwk.keystore-location=classpath:/jwk/iam-keys.jwks"}) public class JWKDefaultKeyTests extends EndpointsTestUtils implements JWKTestSupport { - @Before - public void setup() { - buildMockMvc(); - } - private String getAccessTokenForUser() throws Exception { return new AccessTokenGetter().grantType("password") @@ -79,7 +69,7 @@ public void testJwkEndpointResult() throws Exception { mvc.perform(get(JWK_ENDPOINT)) .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.keys", hasSize(2))) .andExpect(jsonPath("$.keys[0].kid", either(is("iam1")).or(is("iam2")))) .andExpect(jsonPath("$.keys[1].kid", either(is("iam1")).or(is("iam2")))); diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKECKeyTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKECKeyTests.java index 3716a0ac5..f4057eb9b 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKECKeyTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKECKeyTests.java @@ -25,36 +25,25 @@ import java.text.ParseException; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.http.MediaType; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; import com.nimbusds.jwt.JWTParser; import com.nimbusds.jwt.SignedJWT; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = IamLoginService.class) -@WebAppConfiguration -@Transactional + +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @TestPropertySource(properties = {"iam.jwk.default-key-id=iam", "iam.jwk.default-jws-algorithm=ES256", "iam.jwk.keystore-location=classpath:/jwk/ec.jwks"}) public class JWKECKeyTests extends EndpointsTestUtils implements JWKTestSupport { - - @Before - public void setup() { - buildMockMvc(); - } - private String getAccessTokenForUser() throws Exception { return new AccessTokenGetter().grantType("password") @@ -79,7 +68,7 @@ public void testJwkEndpointResult() throws Exception { mvc.perform(get(JWK_ENDPOINT)) .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.keys", hasSize(1))) .andExpect(jsonPath("$.keys[0].kid", is("iam"))); diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKEndpointTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKEndpointTests.java index 55b9e04e8..f3d23dc76 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKEndpointTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/jwk/JWKEndpointTests.java @@ -21,39 +21,29 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.http.MediaType; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.core.web.jwk.IamJWKSetPublishingEndpoint; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = IamLoginService.class) -@WebAppConfiguration -@Transactional + +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest public class JWKEndpointTests extends EndpointsTestUtils { private static final String ENDPOINT = "/" + IamJWKSetPublishingEndpoint.URL; - @Before - public void setup() throws Exception { - buildMockMvc(); - } - @Test public void testKeys() throws Exception { // @formatter:off mvc.perform(get(ENDPOINT)) .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.keys", hasSize(1))) .andExpect(jsonPath("$.keys[0].kty").value("RSA")) .andExpect(jsonPath("$.keys[0].e").value("AQAB")) diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/labels/LabelsOAuthEncodingTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/labels/LabelsOAuthEncodingTests.java index 8dae4b868..51c3ff56c 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/labels/LabelsOAuthEncodingTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/labels/LabelsOAuthEncodingTests.java @@ -26,28 +26,23 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; import com.nimbusds.jwt.JWT; import com.nimbusds.jwt.JWTParser; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.core.user.IamAccountService; import it.infn.mw.iam.persistence.model.IamAccount; import it.infn.mw.iam.persistence.model.IamLabel; import it.infn.mw.iam.persistence.repository.IamAccountRepository; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional + +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @TestPropertySource(properties = {"iam.token-enhancer.include-labels[0].label.name=test", "iam.token-enhancer.include-labels[0].label.prefix=iam", "iam.token-enhancer.include-labels[0].claim-name=test_label",}) @@ -81,7 +76,6 @@ private Supplier assertionError(String message) { @Before public void setup() { - buildMockMvc(); mockOAuth2Filter.cleanupSecurityContext(); } diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcClaimValueHelperTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcClaimValueHelperTests.java index 666b98f7d..436eb6248 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcClaimValueHelperTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcClaimValueHelperTests.java @@ -30,22 +30,20 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import com.google.common.collect.Sets; -import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.core.group.IamGroupService; import it.infn.mw.iam.core.oauth.profile.aarc.AarcClaimValueHelper; import it.infn.mw.iam.persistence.model.IamGroup; import it.infn.mw.iam.persistence.model.IamUserInfo; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, CoreControllerTestSupport.class}) +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @TestPropertySource(properties = { // @formatter:off "iam.host=example.org", @@ -71,7 +69,6 @@ public void setup() { } - @Test public void testEmptyGroupsUrnEncode() { diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcProfileIntegrationTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcProfileIntegrationTests.java index a6442906c..6dfac2bf7 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcProfileIntegrationTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/AarcProfileIntegrationTests.java @@ -26,10 +26,8 @@ import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; -import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -41,31 +39,22 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.WebApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.nimbusds.jwt.JWT; import com.nimbusds.jwt.JWTParser; -import it.infn.mw.iam.IamLoginService; -import it.infn.mw.iam.config.IamProperties; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; -import it.infn.mw.iam.test.util.WithAnonymousUser; import it.infn.mw.iam.test.util.WithMockOAuthUser; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional + +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @TestPropertySource(properties = { // @formatter:off "iam.host=example.org", @@ -93,18 +82,11 @@ public class AarcProfileIntegrationTests extends EndpointsTestUtils { @Autowired - private WebApplicationContext context; - - @Autowired - IamProperties iamProperties; - - @Autowired - MockOAuth2Filter oauth2Filter; + private MockOAuth2Filter oauth2Filter; @Before public void setup() { - mvc = - MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).alwaysDo(log()).build(); + oauth2Filter.cleanupSecurityContext(); } @After @@ -129,7 +111,6 @@ private String getAccessTokenForUser(String scopes) throws Exception { } @Test - @WithAnonymousUser public void testEdupersonEntitlementScope() throws Exception { Set scopes = Sets.newHashSet("openid", "profile", "eduperson_entitlement"); @@ -147,7 +128,6 @@ public void testEdupersonEntitlementScope() throws Exception { } @Test - @WithAnonymousUser public void testEdupersonScopedAffiliationScope() throws Exception { Set scopes = Sets.newHashSet("openid", "profile", "eduperson_scoped_affiliation"); @@ -162,7 +142,6 @@ public void testEdupersonScopedAffiliationScope() throws Exception { } @Test - @WithAnonymousUser public void testEdupersonScopedAffiliationAndEntitlementScopes() throws Exception { Set scopes = Sets.newHashSet("openid", "profile", "eduperson_scoped_affiliation", @@ -183,7 +162,6 @@ public void testEdupersonScopedAffiliationAndEntitlementScopes() throws Exceptio } @Test - @WithAnonymousUser public void testAarcProfileIntrospect() throws Exception { Set scopes = Sets.newHashSet("openid", "profile", "email", diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileIntegrationTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileIntegrationTests.java index e740d1eb5..f45ab127b 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileIntegrationTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileIntegrationTests.java @@ -30,10 +30,8 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; -import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -45,7 +43,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.authority.AuthorityUtils; @@ -55,35 +52,27 @@ import org.springframework.security.oauth2.provider.OAuth2Authentication; import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.WebApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; import com.nimbusds.jwt.JWT; import com.nimbusds.jwt.JWTClaimsSet; import com.nimbusds.jwt.JWTParser; -import it.infn.mw.iam.IamLoginService; -import it.infn.mw.iam.config.IamProperties; import it.infn.mw.iam.core.oauth.granters.TokenExchangeTokenGranter; import it.infn.mw.iam.core.user.IamAccountService; import it.infn.mw.iam.persistence.model.IamAccount; import it.infn.mw.iam.persistence.model.IamAttribute; import it.infn.mw.iam.persistence.repository.IamAccountRepository; -import it.infn.mw.iam.test.core.CoreControllerTestSupport; import it.infn.mw.iam.test.oauth.EndpointsTestUtils; -import it.infn.mw.iam.test.util.WithAnonymousUser; import it.infn.mw.iam.test.util.WithMockOAuthUser; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; import it.infn.mw.iam.test.util.oauth.MockOAuth2Filter; import it.infn.mw.iam.test.util.oauth.MockOAuth2Request; import net.minidev.json.JSONObject; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class, CoreControllerTestSupport.class}) -@WebAppConfiguration -@Transactional + +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest @TestPropertySource(properties = { // @formatter:off "iam.jwt-profile.default-profile=wlcg", @@ -131,24 +120,17 @@ public class WLCGProfileIntegrationTests extends EndpointsTestUtils { private static final String ALL_AUDIENCES_VALUE = "https://wlcg.cern.ch/jwt/v1/any"; @Autowired - private WebApplicationContext context; - - @Autowired - IamProperties iamProperties; + private IamAccountRepository repo; @Autowired - IamAccountRepository repo; + private IamAccountService accountService; @Autowired - IamAccountService accountService; - - @Autowired - MockOAuth2Filter oauth2Filter; + private MockOAuth2Filter oauth2Filter; @Before public void setup() { - mvc = - MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).alwaysDo(log()).build(); + oauth2Filter.cleanupSecurityContext(); } @After @@ -191,7 +173,6 @@ private String getAccessTokenForUser(String scopes) throws Exception { } @Test - @WithAnonymousUser public void testWlcgProfile() throws Exception { JWT token = JWTParser.parse(getAccessTokenForUser("openid profile")); @@ -205,7 +186,6 @@ public void testWlcgProfile() throws Exception { } @Test - @WithAnonymousUser public void testWlcgProfileIdToken() throws Exception { String idTokenString = (String) new AccessTokenGetter().grantType("password") @@ -234,7 +214,6 @@ public void testWlcgProfileIdToken() throws Exception { } @Test - @WithAnonymousUser public void testWlcgProfileAudience() throws Exception { @@ -279,7 +258,6 @@ public void testWlcgProfileAudience() throws Exception { } @Test - @WithAnonymousUser public void testWlcgProfileGroups() throws Exception { JWT token = JWTParser.parse(getAccessTokenForUser("openid profile wlcg.groups")); @@ -292,7 +270,6 @@ public void testWlcgProfileGroups() throws Exception { } @Test - @WithAnonymousUser public void testWlcgProfileGroupRequest() throws Exception { JWT token = JWTParser.parse(getAccessTokenForUser("openid profile wlcg.groups:/Analysis")); diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileUserinfoEndpointTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileUserinfoEndpointTests.java index 382c2ad83..8f306f8b5 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileUserinfoEndpointTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/oauth/profile/WLCGProfileUserinfoEndpointTests.java @@ -24,23 +24,23 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.boot.test.WebIntegrationTest; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.HttpStatus; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.test.context.junit4.SpringRunner; import com.fasterxml.jackson.databind.ObjectMapper; import com.jayway.restassured.RestAssured; import it.infn.mw.iam.IamLoginService; import it.infn.mw.iam.test.TestUtils; +import it.infn.mw.iam.test.util.annotation.IamMockMvcIntegrationTest; -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {IamLoginService.class}) -@WebIntegrationTest(randomPort = true) -@Transactional +@RunWith(SpringRunner.class) +@IamMockMvcIntegrationTest +@SpringBootTest(classes = {IamLoginService.class}, + webEnvironment = WebEnvironment.RANDOM_PORT) @TestPropertySource(properties = { // @formatter:off "iam.jwt-profile.default-profile=wlcg",