Загрузка данных


@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)
    );
}