Merge "Fix robot public key string"
[integration.git] / test / mocks / pnfsimulator / src / test / java / org / onap / pnfsimulator / message / MessageProviderTest.java
1 package org.onap.pnfsimulator.message;
2
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;
20
21 import java.util.UUID;
22 import org.json.JSONObject;
23 import org.junit.jupiter.api.BeforeAll;
24 import org.junit.jupiter.api.Test;
25
26 public class MessageProviderTest {
27
28     private static final String testParamsJson =
29         "{\"key1\": \"val1\",\"key2\": \"val2\",\"pnfKey3\": \"pnfVal3\",\"key4\": \"val4\"}";
30
31     private static MessageProvider messageProvider;
32
33     @BeforeAll
34     public static void setup() {
35         messageProvider = MessageProvider.getInstance();
36     }
37
38     @Test
39     public void createMessage_should_throw_when_given_null_argument() {
40         assertThrows(IllegalArgumentException.class,
41             () -> messageProvider.createMessage(null),
42             "Params object cannot be null");
43     }
44
45     @Test
46     public void createMessage_should_create_constant_message_when_no_params_specified() {
47         JSONObject message = messageProvider.createMessage(new JSONObject());
48
49         JSONObject commonEventHeader = message.getJSONObject(COMMON_EVENT_HEADER);
50         JSONObject otherFields = message.getJSONObject(OTHER_FIELDS);
51
52         JSONObject expectedCommonEventHeader = generateConstantCommonEventHeader();
53         JSONObject expectedOtherFields = generateConstantOtherFields();
54
55         expectedCommonEventHeader
56             .toMap()
57             .forEach((key, val) -> assertTrue(commonEventHeader.has(key),
58                 () -> String.format("Key %s is not present", key)));
59
60         expectedOtherFields
61             .toMap()
62             .forEach((key, val) -> assertTrue(otherFields.has(key),
63                 () -> String.format("Key %s is not present", key)));
64     }
65
66
67     @Test
68     public void createMessage_should_add_specified_params_to_valid_subobjects() {
69         JSONObject params = new JSONObject(testParamsJson);
70         JSONObject message = messageProvider.createMessage(params);
71
72         JSONObject commonEventHeader = message.getJSONObject(COMMON_EVENT_HEADER);
73         JSONObject otherFields = message.getJSONObject(OTHER_FIELDS);
74
75         assertEquals("pnfVal3", otherFields.getString("pnfKey3"));
76         assertEquals("val1", commonEventHeader.getString("key1"));
77         assertEquals("val2", commonEventHeader.getString("key2"));
78         assertEquals("val4", commonEventHeader.getString("key4"));
79     }
80
81
82     private JSONObject generateConstantCommonEventHeader() {
83
84         JSONObject commonEventHeader = new JSONObject();
85         long timestamp = System.currentTimeMillis();
86
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);
96
97         return commonEventHeader;
98     }
99
100     private JSONObject generateConstantOtherFields() {
101         JSONObject otherFields = new JSONObject();
102
103         otherFields.put(OTHER_FIELDS_VERSION, 1);
104         otherFields.put(PNF_LAST_SERVICE_DATE, 1517206400);
105         otherFields.put(PNF_MANUFACTURE_DATE, 1516406400);
106
107         return otherFields;
108     }
109
110 }