1 package org.onap.pnfsimulator.message;
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.junit.jupiter.api.Assertions.assertThrows;
5 import static org.junit.jupiter.api.Assertions.assertTrue;
6 import static org.onap.pnfsimulator.message.MessageConstants.COMMON_EVENT_HEADER;
7 import static org.onap.pnfsimulator.message.MessageConstants.DOMAIN;
8 import static org.onap.pnfsimulator.message.MessageConstants.EVENT_ID;
9 import static org.onap.pnfsimulator.message.MessageConstants.EVENT_TYPE;
10 import static org.onap.pnfsimulator.message.MessageConstants.INTERNAL_HEADER_FIELDS;
11 import static org.onap.pnfsimulator.message.MessageConstants.LAST_EPOCH_MICROSEC;
12 import static org.onap.pnfsimulator.message.MessageConstants.OTHER_FIELDS;
13 import static org.onap.pnfsimulator.message.MessageConstants.OTHER_FIELDS_VERSION;
14 import static org.onap.pnfsimulator.message.MessageConstants.PNF_LAST_SERVICE_DATE;
15 import static org.onap.pnfsimulator.message.MessageConstants.PNF_MANUFACTURE_DATE;
16 import static org.onap.pnfsimulator.message.MessageConstants.PRIORITY;
17 import static org.onap.pnfsimulator.message.MessageConstants.SEQUENCE;
18 import static org.onap.pnfsimulator.message.MessageConstants.START_EPOCH_MICROSEC;
19 import static org.onap.pnfsimulator.message.MessageConstants.VERSION;
21 import java.util.UUID;
22 import org.json.JSONObject;
23 import org.junit.jupiter.api.BeforeAll;
24 import org.junit.jupiter.api.Test;
26 public class MessageProviderTest {
28 private static final String testParamsJson =
29 "{\"key1\": \"val1\",\"key2\": \"val2\",\"pnfKey3\": \"pnfVal3\",\"key4\": \"val4\"}";
31 private static MessageProvider messageProvider;
34 public static void setup() {
35 messageProvider = MessageProvider.getInstance();
39 public void createMessage_should_throw_when_given_null_argument() {
40 assertThrows(IllegalArgumentException.class,
41 () -> messageProvider.createMessage(null),
42 "Params object cannot be null");
46 public void createMessage_should_create_constant_message_when_no_params_specified() {
47 JSONObject message = messageProvider.createMessage(new JSONObject());
49 JSONObject commonEventHeader = message.getJSONObject(COMMON_EVENT_HEADER);
50 JSONObject otherFields = message.getJSONObject(OTHER_FIELDS);
52 JSONObject expectedCommonEventHeader = generateConstantCommonEventHeader();
53 JSONObject expectedOtherFields = generateConstantOtherFields();
55 expectedCommonEventHeader
57 .forEach((key, val) -> assertTrue(commonEventHeader.has(key),
58 () -> String.format("Key %s is not present", key)));
62 .forEach((key, val) -> assertTrue(otherFields.has(key),
63 () -> String.format("Key %s is not present", key)));
68 public void createMessage_should_add_specified_params_to_valid_subobjects() {
69 JSONObject params = new JSONObject(testParamsJson);
70 JSONObject message = messageProvider.createMessage(params);
72 JSONObject commonEventHeader = message.getJSONObject(COMMON_EVENT_HEADER);
73 JSONObject otherFields = message.getJSONObject(OTHER_FIELDS);
75 assertEquals("pnfVal3", otherFields.getString("pnfKey3"));
76 assertEquals("val1", commonEventHeader.getString("key1"));
77 assertEquals("val2", commonEventHeader.getString("key2"));
78 assertEquals("val4", commonEventHeader.getString("key4"));
82 private JSONObject generateConstantCommonEventHeader() {
84 JSONObject commonEventHeader = new JSONObject();
85 long timestamp = System.currentTimeMillis();
87 commonEventHeader.put(DOMAIN, "other");
88 commonEventHeader.put(EVENT_ID, UUID.randomUUID() + "-reg");
89 commonEventHeader.put(EVENT_TYPE, "pnfRegistration");
90 commonEventHeader.put(LAST_EPOCH_MICROSEC, timestamp);
91 commonEventHeader.put(PRIORITY, "Normal");
92 commonEventHeader.put(SEQUENCE, 0);
93 commonEventHeader.put(START_EPOCH_MICROSEC, timestamp);
94 commonEventHeader.put(INTERNAL_HEADER_FIELDS, new JSONObject());
95 commonEventHeader.put(VERSION, 3);
97 return commonEventHeader;
100 private JSONObject generateConstantOtherFields() {
101 JSONObject otherFields = new JSONObject();
103 otherFields.put(OTHER_FIELDS_VERSION, 1);
104 otherFields.put(PNF_LAST_SERVICE_DATE, 1517206400);
105 otherFields.put(PNF_MANUFACTURE_DATE, 1516406400);