use of com.nexblocks.authguard.service.model.AccountBO in project AuthGuard by AuthGuard.
the class AuthorizationCodeToOidcTest method exchange.
@Test
void exchange() {
final AuthRequestBO authRequest = AuthRequestBO.builder().token("auth code").build();
final AccountTokenDO accountToken = AccountTokenDO.builder().associatedAccountId("account").build();
final AccountBO account = AccountBO.builder().id("account").build();
final AuthResponseBO authResponse = AuthResponseBO.builder().token("OIDC").build();
Mockito.when(authorizationCodeVerifier.verifyAndGetAccountToken(authRequest.getToken())).thenReturn(Either.right(accountToken));
Mockito.when(accountsService.getById(accountToken.getAssociatedAccountId())).thenReturn(Optional.of(account));
Mockito.when(openIdConnectTokenProvider.generateToken(account, (TokenRestrictionsBO) null)).thenReturn(authResponse);
final Either<Exception, AuthResponseBO> actual = authorizationCodeToOidc.exchange(authRequest);
assertThat(actual.isRight());
assertThat(actual.get()).isEqualTo(authResponse);
}
use of com.nexblocks.authguard.service.model.AccountBO in project AuthGuard by AuthGuard.
the class RefreshToAccessTokenTest method exchange.
@Test
void exchange() {
// data
final String accountId = "account";
final String refreshToken = "refresh_token";
final AuthRequestBO authRequest = AuthRequestBO.builder().token(refreshToken).build();
final AccountTokenDO accountToken = AccountTokenDO.builder().token(refreshToken).associatedAccountId(accountId).expiresAt(OffsetDateTime.now().plusMinutes(1)).build();
final AccountBO account = AccountBO.builder().id(accountId).build();
final AuthResponseBO newTokens = AuthResponseBO.builder().token("new_token").refreshToken("new_refresh_token").build();
// mock
Mockito.when(accountTokensRepository.getByToken(authRequest.getToken())).thenReturn(CompletableFuture.completedFuture(Optional.of(accountToken)));
Mockito.when(accountsService.getById(accountId)).thenReturn(Optional.of(account));
Mockito.when(accessTokenProvider.generateToken(account, (TokenRestrictionsBO) null)).thenReturn(newTokens);
// do
final Either<Exception, AuthResponseBO> actual = refreshToAccessToken.exchange(authRequest);
// assert
assertThat(actual.isRight()).isTrue();
assertThat(actual.right().get()).isEqualTo(newTokens);
Mockito.verify(accountTokensRepository).deleteToken(refreshToken);
}
use of com.nexblocks.authguard.service.model.AccountBO in project AuthGuard by AuthGuard.
the class VerificationSubscriberTest method onMessage.
@Test
void onMessage() {
final AccountBO account = AccountBO.builder().id("account-id").email(AccountEmailBO.builder().email("unverified").verified(false).build()).build();
final VerificationRequestBO verificationRequest = VerificationRequestBO.builder().account(account).emails(Collections.singletonList(account.getEmail())).build();
final Message<VerificationRequestBO> message = Message.<VerificationRequestBO>builder().eventType(EventType.EMAIL_VERIFICATION).bodyType(VerificationRequestBO.class).messageBody(verificationRequest).build();
verificationSubscriber.onMessage(message);
final ArgumentCaptor<AccountTokenDO> accountTokenCaptor = ArgumentCaptor.forClass(AccountTokenDO.class);
final ArgumentCaptor<ImmutableEmail> emailCaptor = ArgumentCaptor.forClass(ImmutableEmail.class);
Mockito.verify(accountTokensRepository).save(accountTokenCaptor.capture());
Mockito.verify(emailProvider, Mockito.times(1)).send(emailCaptor.capture());
final AccountTokenDO accountToken = accountTokenCaptor.getValue();
final ImmutableEmail email = emailCaptor.getValue();
assertThat(accountToken.getAssociatedAccountId()).isEqualTo(account.getId());
assertThat(accountToken.getAdditionalInformation().get("email")).isEqualTo("unverified");
assertThat(accountToken.getToken()).isNotNull();
assertThat(accountToken.getExpiresAt()).isNotNull();
assertThat(email.getTo()).isEqualTo("unverified");
assertThat(email.getBody()).isNull();
assertThat(email.getParameters()).containsOnlyKeys("token");
}
use of com.nexblocks.authguard.service.model.AccountBO in project AuthGuard by AuthGuard.
the class IdTokenProviderTest method generate.
@Test
void generate() {
final IdTokenProvider idTokenProvider = newProviderInstance(jwtConfig());
final AccountBO account = RANDOM.nextObject(AccountBO.class).withActive(true);
final AuthResponseBO tokens = idTokenProvider.generateToken(account);
assertThat(tokens).isNotNull();
assertThat(tokens.getToken()).isNotNull();
assertThat(tokens.getRefreshToken()).isNotNull();
assertThat(tokens.getToken()).isNotEqualTo(tokens.getRefreshToken());
verifyToken(tokens.getToken().toString(), account.getId(), null, null, null);
}
use of com.nexblocks.authguard.service.model.AccountBO in project AuthGuard by AuthGuard.
the class OtpProviderTest method generateToken.
@Test
void generateToken() {
final OtpConfig otpConfig = OtpConfig.builder().mode(OtpMode.ALPHANUMERIC).length(6).lifeTime("5m").build();
setup(otpConfig);
final AccountBO account = random.nextObject(AccountBO.class).withActive(true);
final AuthResponseBO expected = AuthResponseBO.builder().type("otp").entityType(EntityType.ACCOUNT).entityId(account.getId()).build();
final AuthResponseBO generated = otpProvider.generateToken(account);
assertThat(generated).isEqualToIgnoringGivenFields(expected, "token");
assertThat(generated.getToken()).isNotNull();
final ArgumentCaptor<OneTimePasswordDO> argumentCaptor = ArgumentCaptor.forClass(OneTimePasswordDO.class);
Mockito.verify(mockOtpRepository).save(argumentCaptor.capture());
final OneTimePasswordDO persisted = argumentCaptor.getValue();
assertThat(persisted.getAccountId()).isEqualTo(account.getId());
assertThat(persisted.getExpiresAt()).isAfter(OffsetDateTime.now()).isBefore(OffsetDateTime.now().plus(Duration.ofMinutes(6)));
assertThat(persisted.getId()).isNotNull();
assertThat(persisted.getPassword()).isNotNull();
assertThat(persisted.getPassword()).hasSize(6);
Mockito.verify(messageBus, Mockito.times(1)).publish(eq("otp"), any());
}
Aggregations