Search in sources :

Example 26 with User

use of uk.gov.pay.adminusers.model.User in project pay-adminusers by alphagov.

the class UserServicesTest method shouldReturnUserAndNotResetLoginCount_ifAuthenticationSuccessfulButUserDisabled.

@Test
void shouldReturnUserAndNotResetLoginCount_ifAuthenticationSuccessfulButUserDisabled() {
    User user = aUser();
    user.setLoginCounter(2);
    user.setDisabled(true);
    UserEntity userEntity = aUserEntityWithTrimmings(user);
    userEntity.setPassword("hashed-password");
    when(mockPasswordHasher.isEqual("random-password", "hashed-password")).thenReturn(true);
    when(mockUserDao.findByUsername(USER_USERNAME)).thenReturn(Optional.of(userEntity));
    Optional<User> userOptional = underTest.authenticate(USER_USERNAME, "random-password");
    assertTrue(userOptional.isPresent());
    User authenticatedUser = userOptional.get();
    assertThat(authenticatedUser.getUsername(), is(USER_USERNAME));
    assertThat(authenticatedUser.isDisabled(), is(true));
    assertThat(authenticatedUser.getLinks().size(), is(1));
    assertThat(userEntity.getLoginCounter(), is(2));
}
Also used : User(uk.gov.pay.adminusers.model.User) UserEntity(uk.gov.pay.adminusers.persistence.entity.UserEntity) Test(org.junit.jupiter.api.Test)

Example 27 with User

use of uk.gov.pay.adminusers.model.User in project pay-adminusers by alphagov.

the class UserServicesTest method shouldReturnEmptyAndDisable_whenAuthenticate2FA_ifUnsuccessfulMaxRetry.

@Test
void shouldReturnEmptyAndDisable_whenAuthenticate2FA_ifUnsuccessfulMaxRetry() {
    User user = aUser();
    user.setLoginCounter(3);
    UserEntity userEntity = aUserEntityWithTrimmings(user);
    when(mockUserDao.findByExternalId(user.getExternalId())).thenReturn(Optional.of(userEntity));
    when(mockSecondFactorAuthenticator.authorize(user.getOtpKey(), 123456)).thenReturn(false);
    when(mockUserDao.merge(userEntityArgumentCaptor.capture())).thenReturn(mock(UserEntity.class));
    Optional<User> tokenOptional = underTest.authenticateSecondFactor(user.getExternalId(), 123456);
    assertFalse(tokenOptional.isPresent());
    UserEntity savedUser = userEntityArgumentCaptor.getValue();
    assertThat(savedUser.getLoginCounter(), is(4));
    assertThat(savedUser.isDisabled(), is(true));
}
Also used : User(uk.gov.pay.adminusers.model.User) UserEntity(uk.gov.pay.adminusers.persistence.entity.UserEntity) Test(org.junit.jupiter.api.Test)

Example 28 with User

use of uk.gov.pay.adminusers.model.User in project pay-adminusers by alphagov.

the class UserServicesTest method shouldReturnUser_whenActivateNewOtpKey_ifCodeIncorrect.

@Test
void shouldReturnUser_whenActivateNewOtpKey_ifCodeIncorrect() {
    User user = aUser();
    UserEntity userEntity = UserEntity.from(user);
    userEntity.setSecondFactor(SecondFactorMethod.SMS);
    userEntity.setOtpKey("Original OTP key");
    userEntity.setProvisionalOtpKey("New OTP key");
    userEntity.setProvisionalOtpKeyCreatedAt(ZonedDateTime.now(ZoneOffset.UTC).minusMinutes(89));
    when(mockUserDao.findByExternalId(user.getExternalId())).thenReturn(Optional.of(userEntity));
    when(mockSecondFactorAuthenticator.authorize("New OTP key", 123456)).thenReturn(false);
    Optional<User> result = underTest.activateNewOtpKey(user.getExternalId(), SecondFactorMethod.APP, 123456);
    assertFalse(result.isPresent());
    assertThat(userEntity.getOtpKey(), is("Original OTP key"));
    assertThat(userEntity.getSecondFactor(), is(SecondFactorMethod.SMS));
    verify(mockUserDao, never()).merge(any(UserEntity.class));
}
Also used : User(uk.gov.pay.adminusers.model.User) UserEntity(uk.gov.pay.adminusers.persistence.entity.UserEntity) Test(org.junit.jupiter.api.Test)

Example 29 with User

use of uk.gov.pay.adminusers.model.User in project pay-adminusers by alphagov.

the class UserServicesTest method shouldReturnUser_whenActivateNewOtpKey_ifProvisionalOtpCodeCreatedAtTooLongAgo.

@Test
void shouldReturnUser_whenActivateNewOtpKey_ifProvisionalOtpCodeCreatedAtTooLongAgo() {
    User user = aUser();
    UserEntity userEntity = UserEntity.from(user);
    userEntity.setSecondFactor(SecondFactorMethod.SMS);
    userEntity.setOtpKey("Original OTP key");
    userEntity.setProvisionalOtpKey("New OTP key");
    userEntity.setProvisionalOtpKeyCreatedAt(ZonedDateTime.now(ZoneOffset.UTC).minusMinutes(91));
    when(mockUserDao.findByExternalId(user.getExternalId())).thenReturn(Optional.of(userEntity));
    Optional<User> result = underTest.activateNewOtpKey(user.getExternalId(), SecondFactorMethod.APP, 123456);
    assertFalse(result.isPresent());
    assertThat(userEntity.getOtpKey(), is("Original OTP key"));
    assertThat(userEntity.getSecondFactor(), is(SecondFactorMethod.SMS));
    verify(mockUserDao, never()).merge(any(UserEntity.class));
}
Also used : User(uk.gov.pay.adminusers.model.User) UserEntity(uk.gov.pay.adminusers.persistence.entity.UserEntity) Test(org.junit.jupiter.api.Test)

Example 30 with User

use of uk.gov.pay.adminusers.model.User in project pay-adminusers by alphagov.

the class UserServicesTest method shouldReturnEmptyAndIncrementLoginCount_ifAuthenticationFail.

@Test
void shouldReturnEmptyAndIncrementLoginCount_ifAuthenticationFail() {
    User user = aUser();
    user.setLoginCounter(1);
    UserEntity userEntity = aUserEntityWithTrimmings(user);
    userEntity.setPassword("hashed-password");
    when(mockUserDao.findByUsername(USER_USERNAME)).thenReturn(Optional.of(UserEntity.from(user)));
    when(mockUserDao.merge(userEntityArgumentCaptor.capture())).thenReturn(mock(UserEntity.class));
    Optional<User> userOptional = underTest.authenticate(USER_USERNAME, "random-password");
    assertFalse(userOptional.isPresent());
    UserEntity savedUser = userEntityArgumentCaptor.getValue();
    assertTrue(within(3, SECONDS, savedUser.getCreatedAt()).matches(savedUser.getUpdatedAt()));
    assertThat(savedUser.getLoginCounter(), is(2));
    assertThat(savedUser.isDisabled(), is(false));
}
Also used : User(uk.gov.pay.adminusers.model.User) UserEntity(uk.gov.pay.adminusers.persistence.entity.UserEntity) Test(org.junit.jupiter.api.Test)

Aggregations

User (uk.gov.pay.adminusers.model.User)77 Test (org.junit.jupiter.api.Test)64 UserEntity (uk.gov.pay.adminusers.persistence.entity.UserEntity)47 Role (uk.gov.pay.adminusers.model.Role)20 Service (uk.gov.pay.adminusers.model.Service)17 JsonNode (com.fasterxml.jackson.databind.JsonNode)13 ZonedDateTime (java.time.ZonedDateTime)7 CreateUserRequest (uk.gov.pay.adminusers.model.CreateUserRequest)7 List (java.util.List)6 Map (java.util.Map)6 SecondFactorToken (uk.gov.pay.adminusers.model.SecondFactorToken)6 Inject (com.google.inject.Inject)5 Optional (java.util.Optional)5 Matchers.emptyOrNullString (org.hamcrest.Matchers.emptyOrNullString)5 BeforeEach (org.junit.jupiter.api.BeforeEach)5 Logger (org.slf4j.Logger)5 LoggerFactory (org.slf4j.LoggerFactory)5 SecondFactorMethod (uk.gov.pay.adminusers.model.SecondFactorMethod)4 ServiceRoleEntity (uk.gov.pay.adminusers.persistence.entity.ServiceRoleEntity)4 Operation (io.swagger.v3.oas.annotations.Operation)3