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