package org.apereo.cas.adaptors.generic; import org.apereo.cas.authentication.CoreAuthenticationTestUtils; import org.apereo.cas.authentication.HttpBasedServiceCredential; import org.apereo.cas.authentication.UsernamePasswordCredential; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import javax.security.auth.login.AccountNotFoundException; import javax.security.auth.login.FailedLoginException; import java.net.MalformedURLException; import java.net.URL; import java.util.HashSet; import java.util.Set; import static org.junit.Assert.*; /** * @author Scott Battaglia * @since 3.0.0 */ public class RejectUsersAuthenticationHandlerTests { @Rule public ExpectedException thrown = ExpectedException.none(); private final RejectUsersAuthenticationHandler authenticationHandler; public RejectUsersAuthenticationHandlerTests() throws Exception { final Set<String> users = new HashSet<>(); users.add("scott"); users.add("dima"); users.add("bill"); this.authenticationHandler = new RejectUsersAuthenticationHandler("", null, null, users); } @Test public void verifySupportsProperUserCredentials() throws Exception { final UsernamePasswordCredential c = new UsernamePasswordCredential(); c.setUsername("fff"); c.setPassword("rutgers"); assertNotNull(this.authenticationHandler.authenticate(c)); } @Test public void verifyDoesntSupportBadUserCredentials() { try { assertFalse(this.authenticationHandler .supports(new HttpBasedServiceCredential(new URL( "http://www.rutgers.edu"), CoreAuthenticationTestUtils.getRegisteredService()))); } catch (final MalformedURLException e) { fail("Could not resolve URL."); } } @Test public void verifyFailsUserInMap() throws Exception { final UsernamePasswordCredential c = new UsernamePasswordCredential(); c.setUsername("scott"); c.setPassword("rutgers"); this.thrown.expect(FailedLoginException.class); this.authenticationHandler.authenticate(c); } @Test public void verifyPassesUserNotInMap() throws Exception { final UsernamePasswordCredential c = new UsernamePasswordCredential(); c.setUsername("fds"); c.setPassword("rutgers"); assertNotNull(this.authenticationHandler.authenticate(c)); } @Test public void verifyPassesNullUserName() throws Exception { final UsernamePasswordCredential c = new UsernamePasswordCredential(); c.setUsername(null); c.setPassword("user"); this.thrown.expect(AccountNotFoundException.class); this.thrown.expectMessage("Username is null."); this.authenticationHandler.authenticate(c); } @Test public void verifyPassesNullUserNameAndPassword() throws Exception { this.thrown.expect(AccountNotFoundException.class); this.thrown.expectMessage("Username is null."); this.authenticationHandler.authenticate(new UsernamePasswordCredential()); } }