@Test
void otpCheck_shouldReturnOkAndSetCookies_whenOtpCodeIsValid() {
UUID msgId = UUID.randomUUID();
String szofSessionId = "test-session-id";
String otpCode = "123456";
RequestDataWrapper requestData = RequestDataWrapper.builder()
.msgId(msgId)
.httpHeaders(new LinkedMultiValueMap<>())
.build();
OtpCheckRequestBody requestBody = OtpCheckRequestBody.builder()
.otpCode(otpCode)
.build();
ComponentLogModel componentLogModel = ComponentLogModel.builder().build();
when(businessConfig.getComponentLogModel()).thenReturn(componentLogModel);
Token token = mock(Token.class);
when(token.getAccessToken()).thenReturn("access-token");
when(token.getRefreshToken()).thenReturn("refresh-token");
when(token.getExpiresInS()).thenReturn(3600L);
UserDto user = UserDto.builder()
.login("testuser")
.fio("Test User")
.email("test@example.com")
.maxUploadFileSizeActual(10_000L)
.maxUploadChunkSize(2_048L)
.maxDownloadChunkSize(4_096L)
.build();
ResponseData successResponseData = AUTH_SUCCESS.getResponse();
AuthResponse authResponse = AuthResponse.builder()
.token(token)
.user(user)
.responseData(successResponseData)
.build();
KafkaExchangeModel responseModel = KafkaExchangeModel.builder()
.msgId(msgId.toString())
.isLocal(true)
.messageBody(authResponse)
.build();
KafkaExchangeModelWrapper kafkaWrapper = KafkaExchangeModelWrapper.builder()
.model(responseModel)
.build();
when(sendersManager.getKafkaSender(RQ_EXTERNAL_AUTH)).thenReturn(mock(KafkaSender.class));
when(cacheManager.get(anyString(), any())).thenReturn(Optional.of(szofSessionId));
doReturn(kafkaWrapper).when(controller).sendAndWaitForKafkaResponse(
same(requestData),
isNull(),
any(KafkaExchangeModel.class)
);
ResponseEntity<UserAuthResponseMessage> response = controller.otpCheck(
requestData, requestBody, szofSessionId);
assertEquals(HttpStatus.OK, response.getStatusCode());
assertNotNull(response.getBody());
UserAuthResponseMessage body = response.getBody();
assertNotNull(body.getMessage());
assertTrue(body.getMessage().getResult());
assertEquals(msgId, body.getMessage().getRequestId());
assertEquals(successResponseData.message().code(), body.getMessage().getDetailCode());
assertNotNull(body.getToken());
assertEquals("access-token", body.getToken().getAccessToken());
assertEquals("refresh-token", body.getToken().getRefreshToken());
assertEquals(3600L, body.getToken().getExpires());
assertNotNull(body.getUser());
assertEquals("testuser", body.getUser().getLogin());
assertEquals("Test User", body.getUser().getFio());
verify(httpLoggingService).assembleAndSendLog(
same(requestData),
same(httpLoggingAspect),
eq(PATH_OTP_CHECK_POST)
);
}