|  | @@ -0,0 +1,51 @@
 | 
	
		
			
				|  |  | +package org.springframework.security.matcher;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import org.hamcrest.Description;
 | 
	
		
			
				|  |  | +import org.hamcrest.Factory;
 | 
	
		
			
				|  |  | +import org.hamcrest.Matcher;
 | 
	
		
			
				|  |  | +import org.hamcrest.TypeSafeMatcher;
 | 
	
		
			
				|  |  | +import org.springframework.security.Authentication;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +public class AuthenticationMatcher extends TypeSafeMatcher<Authentication> {
 | 
	
		
			
				|  |  | +    private String username;
 | 
	
		
			
				|  |  | +    private String password;
 | 
	
		
			
				|  |  | +    private String[] authorities;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public boolean matchesSafely(Authentication auth) {
 | 
	
		
			
				|  |  | +        if (!username.equals(auth.getName())) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (password != null && !password.equals(auth.getCredentials())) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void describeTo(Description d) {
 | 
	
		
			
				|  |  | +        d.appendText("an authentication object with username = '" + username + "'");
 | 
	
		
			
				|  |  | +        if (password != null) {
 | 
	
		
			
				|  |  | +            d.appendText(", password = '" + password + "'");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Factory
 | 
	
		
			
				|  |  | +    public static Matcher<Authentication> anAuthenticationWithUsername(String name) {
 | 
	
		
			
				|  |  | +        AuthenticationMatcher matcher = new AuthenticationMatcher();
 | 
	
		
			
				|  |  | +        matcher.username = name;
 | 
	
		
			
				|  |  | +        return matcher;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Factory
 | 
	
		
			
				|  |  | +    public static Matcher<Authentication> anAuthenticationWithUsernameAndPassword(String name, String password) {
 | 
	
		
			
				|  |  | +        AuthenticationMatcher matcher = new AuthenticationMatcher();
 | 
	
		
			
				|  |  | +        matcher.username = name;
 | 
	
		
			
				|  |  | +        matcher.password = password;
 | 
	
		
			
				|  |  | +        return matcher;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |