|
|
@@ -0,0 +1,69 @@
|
|
|
+package org.springframework.security.userdetails.decorator;
|
|
|
+
|
|
|
+import org.springframework.security.userdetails.UserDetailsService;
|
|
|
+import org.springframework.security.userdetails.UserDetails;
|
|
|
+import org.springframework.security.userdetails.UsernameNotFoundException;
|
|
|
+import org.springframework.security.userdetails.User;
|
|
|
+import org.springframework.security.GrantedAuthority;
|
|
|
+import org.springframework.security.GrantedAuthorityImpl;
|
|
|
+import org.springframework.security.LockedException;
|
|
|
+import org.springframework.security.DisabledException;
|
|
|
+import org.springframework.security.CredentialsExpiredException;
|
|
|
+import org.springframework.security.AccountExpiredException;
|
|
|
+
|
|
|
+import org.springframework.dao.DataAccessException;
|
|
|
+
|
|
|
+import org.junit.Test;
|
|
|
+
|
|
|
+import java.util.Map;
|
|
|
+import java.util.HashMap;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author Luke Taylor
|
|
|
+ * @version $Id$
|
|
|
+ */
|
|
|
+public class StatusCheckingUserDetailsServiceTests {
|
|
|
+ private StatusCheckingUserDetailsService us = new StatusCheckingUserDetailsService(new MockUserDetailsService());
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void validAccountIsSuccessfullyLoaded() throws Exception {
|
|
|
+ us.loadUserByUsername("valid");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected = LockedException.class)
|
|
|
+ public void lockedAccountThrowsLockedException() throws Exception {
|
|
|
+ us.loadUserByUsername("locked");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected = DisabledException.class)
|
|
|
+ public void disabledAccountThrowsDisabledException() throws Exception {
|
|
|
+ us.loadUserByUsername("disabled");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected = CredentialsExpiredException.class)
|
|
|
+ public void credentialsExpiredAccountThrowsCredentialsExpiredException() throws Exception {
|
|
|
+ us.loadUserByUsername("credentialsExpired");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected = AccountExpiredException.class)
|
|
|
+ public void expiredAccountThrowsAccountExpiredException() throws Exception {
|
|
|
+ us.loadUserByUsername("expired");
|
|
|
+ }
|
|
|
+
|
|
|
+ class MockUserDetailsService implements UserDetailsService {
|
|
|
+ private Map <String, UserDetails> users = new HashMap <String, UserDetails>();
|
|
|
+ private GrantedAuthority[] auths = new GrantedAuthority[] {new GrantedAuthorityImpl("A")};
|
|
|
+
|
|
|
+ MockUserDetailsService() {
|
|
|
+ users.put("valid", new User("valid", "",true,true,true,true,auths));
|
|
|
+ users.put("locked", new User("locked", "",true,true,true,false,auths));
|
|
|
+ users.put("disabled", new User("disabled", "",false,true,true,true,auths));
|
|
|
+ users.put("credentialsExpired", new User("credentialsExpired", "",true,true,false,true,auths));
|
|
|
+ users.put("expired", new User("expired", "",true,false,true,true,auths));
|
|
|
+ }
|
|
|
+
|
|
|
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
|
|
|
+ return users.get(username);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|