use of org.finra.herd.model.dto.MessageHeader in project herd by FINRAOS.
the class PublishNotificationMessagesAdviceTest method testPublishNotificationMessagesDatabaseException.
@Test
public void testPublishNotificationMessagesDatabaseException() throws Throwable {
// Create a notification message.
NotificationMessage notificationMessage = new NotificationMessage(MessageTypeEntity.MessageEventTypes.SQS.name(), AWS_SQS_QUEUE_NAME, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)));
// Mock a join point of the method call.
ProceedingJoinPoint joinPoint = getMockedProceedingJoinPoint("testPublishNotificationMessages");
// Mock the external calls.
doCallRealMethod().when(notificationMessageInMemoryQueue).clear();
doCallRealMethod().when(notificationMessageInMemoryQueue).add(notificationMessage);
when(notificationMessageInMemoryQueue.isEmpty()).thenCallRealMethod();
doCallRealMethod().when(notificationMessageInMemoryQueue).remove();
doThrow(new AmazonServiceException(ERROR_MESSAGE)).when(notificationMessagePublishingService).publishNotificationMessage(notificationMessage);
doThrow(new RuntimeException(ERROR_MESSAGE)).when(notificationMessagePublishingService).addNotificationMessageToDatabaseQueue(notificationMessage);
// Clear the queue.
notificationMessageInMemoryQueue.clear();
// Add the notification message to the queue.
notificationMessageInMemoryQueue.add(notificationMessage);
// Validate that the queue is not empty now.
assertFalse(notificationMessageInMemoryQueue.isEmpty());
// Call the method under test.
publishNotificationMessagesAdvice.publishNotificationMessages(joinPoint);
// Verify the external calls.
verify(notificationMessageInMemoryQueue, times(2)).clear();
verify(notificationMessageInMemoryQueue).add(notificationMessage);
verify(notificationMessageInMemoryQueue, times(3)).isEmpty();
verify(notificationMessageInMemoryQueue).remove();
verify(notificationMessagePublishingService).publishNotificationMessage(notificationMessage);
verify(notificationMessagePublishingService).addNotificationMessageToDatabaseQueue(notificationMessage);
verifyNoMoreInteractionsHelper();
// Validate the results.
assertTrue(notificationMessageInMemoryQueue.isEmpty());
}
Aggregations