diff --git a/security/src/test/java/org/springframework/ws/soap/security/wss4j/callback/SpringDigestPasswordValidationCallbackHandlerTest.java b/security/src/test/java/org/springframework/ws/soap/security/wss4j/callback/SpringDigestPasswordValidationCallbackHandlerTest.java new file mode 100644 index 00000000..8a7266b3 --- /dev/null +++ b/security/src/test/java/org/springframework/ws/soap/security/wss4j/callback/SpringDigestPasswordValidationCallbackHandlerTest.java @@ -0,0 +1,61 @@ +package org.springframework.ws.soap.security.wss4j.callback; + +import junit.framework.TestCase; +import org.apache.ws.security.WSUsernameTokenPrincipal; +import org.easymock.MockControl; + +import org.springframework.security.Authentication; +import org.springframework.security.GrantedAuthority; +import org.springframework.security.GrantedAuthorityImpl; +import org.springframework.security.context.SecurityContext; +import org.springframework.security.context.SecurityContextHolder; +import org.springframework.security.userdetails.User; +import org.springframework.security.userdetails.UserDetails; +import org.springframework.security.userdetails.UserDetailsService; + +/** @author tareq */ +public class SpringDigestPasswordValidationCallbackHandlerTest extends TestCase { + + private SpringDigestPasswordValidationCallbackHandler callbackHandler; + + private GrantedAuthorityImpl grantedAuthority; + + private UserDetailsService userDetailsService; + + private MockControl control; + + private WSUsernameTokenPrincipal principal; + + private UsernameTokenPrincipalCallback callback; + + private UserDetails user; + + protected void setUp() throws Exception { + callbackHandler = new SpringDigestPasswordValidationCallbackHandler(); + + grantedAuthority = new GrantedAuthorityImpl("ROLE_1"); + user = new User("Ernie", "Bert", true, true, true, true, new GrantedAuthority[]{grantedAuthority}); + + control = MockControl.createControl(UserDetailsService.class); + userDetailsService = (UserDetailsService) control.getMock(); + userDetailsService.loadUserByUsername("Ernie"); + control.setDefaultReturnValue(user); + control.replay(); + callbackHandler.setUserDetailsService(userDetailsService); + + principal = new WSUsernameTokenPrincipal("Ernie", true); + callback = new UsernameTokenPrincipalCallback(principal); + + } + + public void testHandleUsernameTokenPrincipal() throws Exception { + callbackHandler.handleUsernameTokenPrincipal(callback); + SecurityContext context = SecurityContextHolder.getContext(); + assertNotNull("SecurityContext must not be null", context); + Authentication authentication = context.getAuthentication(); + assertNotNull("Authentication must not be null", authentication); + GrantedAuthority[] authorities = authentication.getAuthorities(); + assertTrue("GrantedAuthority[] must not be null or empty", (authorities != null && authorities.length > 0)); + assertEquals("Unexpected authority", grantedAuthority, authorities[0]); + } +} diff --git a/security/src/test/java/org/springframework/ws/soap/security/wss4j/callback/acegi/AcegiDigestPasswordValidationCallbackHandlerTest.java b/security/src/test/java/org/springframework/ws/soap/security/wss4j/callback/acegi/AcegiDigestPasswordValidationCallbackHandlerTest.java new file mode 100644 index 00000000..2e989dd4 --- /dev/null +++ b/security/src/test/java/org/springframework/ws/soap/security/wss4j/callback/acegi/AcegiDigestPasswordValidationCallbackHandlerTest.java @@ -0,0 +1,62 @@ +package org.springframework.ws.soap.security.wss4j.callback.acegi; + +import junit.framework.TestCase; +import org.acegisecurity.Authentication; +import org.acegisecurity.GrantedAuthority; +import org.acegisecurity.GrantedAuthorityImpl; +import org.acegisecurity.context.SecurityContext; +import org.acegisecurity.context.SecurityContextHolder; +import org.acegisecurity.userdetails.User; +import org.acegisecurity.userdetails.UserDetails; +import org.acegisecurity.userdetails.UserDetailsService; +import org.apache.ws.security.WSUsernameTokenPrincipal; +import org.easymock.MockControl; + +import org.springframework.ws.soap.security.wss4j.callback.UsernameTokenPrincipalCallback; + +/** @author tareq */ +public class AcegiDigestPasswordValidationCallbackHandlerTest extends TestCase { + + private AcegiDigestPasswordValidationCallbackHandler callbackHandler; + + private GrantedAuthorityImpl grantedAuthority; + + private UserDetailsService userDetailsService; + + private MockControl control; + + private WSUsernameTokenPrincipal principal; + + private UsernameTokenPrincipalCallback callback; + + private UserDetails user; + + protected void setUp() throws Exception { + callbackHandler = new AcegiDigestPasswordValidationCallbackHandler(); + + grantedAuthority = new GrantedAuthorityImpl("ROLE_1"); + user = new User("Ernie", "Bert", true, true, true, true, new GrantedAuthority[]{grantedAuthority}); + + control = MockControl.createControl(UserDetailsService.class); + userDetailsService = (UserDetailsService) control.getMock(); + userDetailsService.loadUserByUsername("Ernie"); + control.setDefaultReturnValue(user); + control.replay(); + callbackHandler.setUserDetailsService(userDetailsService); + + principal = new WSUsernameTokenPrincipal("Ernie", true); + callback = new UsernameTokenPrincipalCallback(principal); + + } + + public void testHandleUsernameTokenPrincipal() throws Exception { + callbackHandler.handleUsernameTokenPrincipal(callback); + SecurityContext context = SecurityContextHolder.getContext(); + assertNotNull("SecurityContext must not be null", context); + Authentication authentication = context.getAuthentication(); + assertNotNull("Authentication must not be null", authentication); + GrantedAuthority[] authorities = authentication.getAuthorities(); + assertTrue("GrantedAuthority[] must not be null or empty", (authorities != null && authorities.length > 0)); + assertEquals("Unexpected authority", grantedAuthority, authorities[0]); + } +}