package org.surfnet.oaaas.auth; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.surfnet.oaaas.auth.principal.AuthenticatedPrincipal; import org.surfnet.oaaas.model.ResourceOwner; import org.surfnet.oaaas.repository.ResourceOwnerRepository; public class LocalResourceOwnerAuthenticatorTest { private static final String PASSWORD = "password"; @Mock private ResourceOwnerRepository resourceOwnerRepository; @InjectMocks private LocalResourceOwnerAuthenticator authenticator = new LocalResourceOwnerAuthenticator(); private ResourceOwner resourceOwner; @Before public void before() { MockitoAnnotations.initMocks(this); this.resourceOwner = createResourceOwner("username"); when(resourceOwnerRepository.findByUsername(this.resourceOwner.getUsername())).thenReturn(resourceOwner); } @Test public void testAuthenticate() { AuthenticatedPrincipal principal = this.authenticator.authenticate(this.resourceOwner.getUsername(), PASSWORD); assertNotNull(principal); assertEquals("Principal does not have expected name", this.resourceOwner.getUsername(), principal.getName()); } @Test public void testAuthenticateBadUser() { AuthenticatedPrincipal principal = this.authenticator.authenticate("foo", PASSWORD); assertNull(principal); } @Test public void testAuthenticateBadPassword() { AuthenticatedPrincipal principal = this.authenticator.authenticate(this.resourceOwner.getUsername(), "bad"); assertNull(principal); } private ResourceOwner createResourceOwner(String username) { ResourceOwner resourceOwner = new ResourceOwner(); resourceOwner.setUsername(username); resourceOwner.setPassword(PASSWORD); return resourceOwner; } }