package org.springframework.security.oauth2.config.xml; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.oauth2.provider.ClientDetails; import org.springframework.security.oauth2.provider.ClientDetailsService; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.Collection; import java.util.Set; import static org.junit.Assert.*; @ContextConfiguration @RunWith ( SpringJUnit4ClassRunner.class ) public class ClientDetailsServiceBeanDefinitionParserTests { @Autowired private ClientDetailsService clientDetailsService; @Test public void testClientDetailsFromNonPropertyFile() { // valid client details NOT from property file ClientDetails clientDetails = clientDetailsService.loadClientByClientId("my-client-id-non-property-file"); assertNotNull(clientDetailsService); assertEquals("my-client-id-non-property-file", clientDetails.getClientId()); assertEquals("my-client-secret-non-property-file", clientDetails.getClientSecret()); Set<String> grantTypes = clientDetails.getAuthorizedGrantTypes(); assertNotNull(grantTypes); assertEquals(2, grantTypes.size()); assertTrue(grantTypes.contains("password")); assertTrue(grantTypes.contains("authorization_code")); Set<String> scopes = clientDetails.getScope(); assertNotNull(scopes); assertEquals(2, scopes.size()); assertTrue(scopes.contains("scope1")); assertTrue(scopes.contains("scope2")); Collection<GrantedAuthority> authorities = clientDetails.getAuthorities(); assertNotNull(authorities); assertEquals(2, authorities.size()); assertTrue(AuthorityUtils.authorityListToSet(authorities).contains("ROLE_USER")); assertTrue(AuthorityUtils.authorityListToSet(authorities).contains("ROLE_ANONYMOUS")); } @Test public void testClientDetailsFromPropertyFile() { // valid client details from property file ClientDetails clientDetails = clientDetailsService.loadClientByClientId("my-client-id-property-file"); assertNotNull(clientDetailsService); assertEquals("my-client-id-property-file", clientDetails.getClientId()); assertEquals("my-client-secret-property-file", clientDetails.getClientSecret()); Set<String> grantTypes = clientDetails.getAuthorizedGrantTypes(); assertNotNull(grantTypes); assertEquals(2, grantTypes.size()); assertTrue(grantTypes.contains("password")); assertTrue(grantTypes.contains("authorization_code")); Set<String> scopes = clientDetails.getScope(); assertNotNull(scopes); assertEquals(2, scopes.size()); assertTrue(scopes.contains("scope1")); assertTrue(scopes.contains("scope2")); Collection<GrantedAuthority> authorities = clientDetails.getAuthorities(); assertNotNull(authorities); assertEquals(2, authorities.size()); assertTrue(AuthorityUtils.authorityListToSet(authorities).contains("ROLE_USER")); assertTrue(AuthorityUtils.authorityListToSet(authorities).contains("ROLE_ANONYMOUS")); } @Test public void testClientDetailsDefaultFlow() { ClientDetails clientDetails = clientDetailsService.loadClientByClientId("my-client-id-default-flow"); assertNotNull(clientDetailsService); assertEquals("my-client-id-default-flow", clientDetails.getClientId()); assertEquals(1, clientDetails.getRegisteredRedirectUri().size()); assertEquals("http://mycompany.com", clientDetails.getRegisteredRedirectUri().iterator().next()); Set<String> grantTypes = clientDetails.getAuthorizedGrantTypes(); assertNotNull(grantTypes); assertEquals(2, grantTypes.size()); assertTrue(grantTypes.contains("authorization_code")); assertTrue(grantTypes.contains("refresh_token")); } }