package gov.samhsa.consent2share.infrastructure.eventlistener; import gov.samhsa.consent2share.domain.account.Users; import gov.samhsa.consent2share.domain.account.UsersRepository; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.security.authentication.event.AuthenticationFailureBadCredentialsEvent; import org.springframework.security.authentication.event.AuthenticationSuccessEvent; import org.springframework.security.core.Authentication; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class LoginSuccessEventListenerTest { @Mock UsersRepository usersRepository; @InjectMocks LoginSuccessEventListener loginSuccessEventListener; @Test public void testHandle() { AuthenticationSuccessEvent loginSuccessEvent=mock(AuthenticationSuccessEvent.class); Authentication authentication=mock(Authentication.class); Users user=mock(Users.class); when(loginSuccessEvent.getAuthentication()).thenReturn(authentication); when(authentication.getPrincipal()).thenReturn(user); loginSuccessEventListener.handle(loginSuccessEvent); verify(user).setFailedLoginAttemptsToZero(); verify(usersRepository).updateUser(user); } @Test public void testCanHandle_when_event_unmatch() { AuthenticationFailureBadCredentialsEvent event=mock(AuthenticationFailureBadCredentialsEvent.class); assertEquals(loginSuccessEventListener.canHandle(event),false); } @Test public void testCanHandle_when_event_matches() { AuthenticationSuccessEvent event=mock(AuthenticationSuccessEvent.class); assertEquals(loginSuccessEventListener.canHandle(event),true); } }