void testEmailNotification()

in ddm-notification-service/src/it/java/com/epam/digital/data/platform/notification/listener/UserNotificationListenerKafkaIT.java [97:136]


  void testEmailNotification() {
    var userNotificationMessageCaptor = ArgumentCaptor.forClass(UserNotificationMessageDto.class);
    var emailNotificationMessageCaptor = ArgumentCaptor.forClass(EmailNotificationMessageDto.class);
    createEmailTemplateInDb("template-id", "<html>Hello ${name}!</html>");
    stubUserSettings("3fa85f64-1234-4562-b3fc-2c963f66afa6", "/json/userSettingsResponse.json");
    var userNotificationMessageDto = createMessage();
    var topic = kafkaProperties.getTopics().get("user-notifications");

    kafkaTemplate.send(topic, userNotificationMessageDto);

    await().atMost(Durations.TEN_SECONDS).untilAsserted(() -> {
      verify(listener, times(1)).notify(userNotificationMessageCaptor.capture());
      var userNotificationMessage = userNotificationMessageCaptor.getValue();
      assertThat(userNotificationMessage).isNotNull();
      assertThat(userNotificationMessage).isEqualTo(userNotificationMessageCaptor.getValue());

      verify(emailNotificationListener, times(1)).notify(emailNotificationMessageCaptor.capture());
      var emailNotificationMessage = emailNotificationMessageCaptor.getValue();
      assertThat(emailNotificationMessage).isNotNull();
      assertThat(emailNotificationMessage.getNotification().getMessage()).isNotNull();
      assertThat(emailNotificationMessage.getNotification().getSubject()).isEqualTo("sign notification");
      assertThat(emailNotificationMessage.getRecipient().getId()).isEqualTo("testuser");
      assertThat(emailNotificationMessage.getRecipient().getEmail()).isEqualTo("test@test.com");

      var receivedMessages = greenMail.getReceivedMessages();
      AssertionsForClassTypes.assertThat(receivedMessages).isNotEmpty();
      var receivedMessage = receivedMessages[0];
      AssertionsForClassTypes.assertThat(GreenMailUtil.getBody(receivedMessage))
          .isEqualTo("<html>Hello John!</html>");
      AssertionsForClassTypes.assertThat(receivedMessage.getSubject())
          .isEqualTo("sign notification");
      AssertionsForClassTypes.assertThat(receivedMessage.getAllRecipients()[0].toString())
          .isEqualTo("test@test.com");

      verify(emailNotificationAuditFacade, times(1)).sendAuditOnSuccess(Channel.EMAIL,
          emailNotificationMessage);
      verify(userNotificationAuditFacade, times(1)).sendAuditOnFailure(Channel.INBOX,
          userNotificationMessage, Step.AFTER, "Notification template template-id not found");
    });
  }