1 package org.onap.aai.kafka;
3 import static org.mockito.ArgumentMatchers.anyString;
4 import static org.mockito.ArgumentMatchers.eq;
5 import static org.mockito.Mockito.mock;
6 import static org.mockito.Mockito.times;
7 import static org.mockito.Mockito.verify;
8 import static org.mockito.Mockito.when;
10 import javax.jms.TextMessage;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.mockito.Mock;
16 import org.mockito.junit.MockitoJUnitRunner;
17 import org.onap.aai.PayloadUtil;
18 import org.springframework.core.env.Environment;
19 import org.springframework.kafka.core.KafkaTemplate;
20 import org.springframework.kafka.test.context.EmbeddedKafka;
21 import org.springframework.test.util.ReflectionTestUtils;
23 @RunWith(MockitoJUnitRunner.class)
24 @EmbeddedKafka(partitions = 1, brokerProperties = { "listeners=PLAINTEXT://localhost:9092", "port=9092" })
25 public class AAIKafkaEventJMSConsumerTest {
28 private Environment environment;
31 private KafkaTemplate<String,String> kafkaTemplate;
33 private AAIKafkaEventJMSConsumer aaiKafkaEventJMSConsumer;
37 aaiKafkaEventJMSConsumer = new AAIKafkaEventJMSConsumer(environment,kafkaTemplate);
41 public void onMessage_shouldSendMessageToKafkaTopic_whenAAIEventReceived()
44 TextMessage mockTextMessage = mock(TextMessage.class);
45 String payload = PayloadUtil.getResourcePayload("aai-event.json");
47 when(mockTextMessage.getText()).thenReturn(payload);
48 aaiKafkaEventJMSConsumer.onMessage(mockTextMessage);
49 verify(kafkaTemplate, times(1)).send(eq("AAI-EVENT"), anyString());
53 public void onMessage_shouldNotSendMessageToKafkaTopic_whenInvalidEventReceived() throws Exception{
54 TextMessage mockTextMessage = mock(TextMessage.class);
55 String payload = PayloadUtil.getResourcePayload("aai-invalid-event.json");
56 when(mockTextMessage.getText()).thenReturn(payload);
57 aaiKafkaEventJMSConsumer.onMessage(mockTextMessage);
62 public void onMessage_shouldHandleJSONException() throws Exception {
64 AAIKafkaEventJMSConsumer consumer = new AAIKafkaEventJMSConsumer(null, kafkaTemplate);
65 TextMessage mockTextMessage = mock(TextMessage.class);
66 ReflectionTestUtils.setField(consumer, "kafkaTemplate", null); // Simulate null kafkaTemplate
69 consumer.onMessage(mockTextMessage);
72 // Verify that exception is logged
76 public void onMessage_shouldHandleGenericException() throws Exception {
78 AAIKafkaEventJMSConsumer consumer = new AAIKafkaEventJMSConsumer(null, kafkaTemplate);
79 TextMessage mockTextMessage = mock(TextMessage.class);
80 when(mockTextMessage.getText()).thenReturn("{\"event-topic\":\"AAI-EVENT\",\"aaiEventPayload\":{}}"); // Valid JSON but missing required fields
83 consumer.onMessage(mockTextMessage);
86 // Verify that exception is logged