fe3a244fbe533e04af1da9e7b4ddd73fe0c3cc0b
[dcaegen2/services/prh.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * PNF-REGISTRATION-HANDLER
4  * ================================================================================
5  * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.dcaegen2.services.prh.service;
22
23 import static org.mockito.Mockito.spy;
24
25 import com.google.gson.JsonElement;
26 import com.google.gson.JsonObject;
27 import com.google.gson.JsonParser;
28 import java.util.Optional;
29 import org.junit.jupiter.api.Assertions;
30 import org.junit.jupiter.api.Test;
31 import org.mockito.Mockito;
32 import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
33 import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel;
34 import reactor.core.publisher.Mono;
35 import reactor.test.StepVerifier;
36
37 /**
38  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
39  */
40 class DmaapConsumerJsonParserTest {
41
42     @Test
43     void whenPassingCorrectJson_validationNotThrowingAnException() {
44         //given
45         String message = "[{\"event\": {"
46                 + "\"commonEventHeader\": { "
47                 + " \"sourceName\":\"NOKQTFCOC540002E\","
48                 + " \"nfNamingCode\":\"gNB\" "
49                 + "},"
50                 + "\"pnfRegistrationFields\": {"
51                 + " \"vendorName\": \"nokia\","
52                 + " \"serialNumber\": \"QTFCOC540002E\","
53                 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
54                 + " \"modelNumber\": \"3310\","
55                 + " \"unitType\": \"type\",\n"
56                 + " \"unitFamily\": \"BBU\","
57                 + " \"oamV4IpAddress\": \"10.16.123.234\","
58                 + " \"softwareVersion\": \"v4.5.0.1\","
59                 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
60                 + " \"additionalFields\": {\"attachmentPoint\":\"bla-bla-30-3\",\"cvlan\":\"678\",\"svlan\":\"1005\"}"
61                 + "}}}]";
62
63         String parsed = "{\"event\": {"
64                 + "\"commonEventHeader\": { "
65                 + " \"sourceName\":\"NOKQTFCOC540002E\","
66                 + " \"nfNamingCode\":\"gNB\" "
67                 + "},"
68                 + "\"pnfRegistrationFields\": {"
69                 + " \"vendorName\": \"nokia\","
70                 + " \"serialNumber\": \"QTFCOC540002E\","
71                 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
72                 + " \"modelNumber\": \"3310\","
73                 + " \"unitType\": \"type\",\n"
74                 + " \"unitFamily\": \"BBU\","
75                 + " \"oamV4IpAddress\": \"10.16.123.234\","
76                 + " \"softwareVersion\": \"v4.5.0.1\","
77                 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
78                 + " \"additionalFields\": {\"attachmentPoint\":\"bla-bla-30-3\",\"cvlan\":\"678\",\"svlan\":\"1005\"}"
79                 + "}}}";
80
81         JsonObject jsonObject = new JsonParser().parse("{\n"
82             + "        \"attachmentPoint\": \"bla-bla-30-3\",\n"
83             + "        \"cvlan\": \"678\",\n"
84             + "        \"svlan\": \"1005\"\n"
85             + "      }").getAsJsonObject();
86
87         ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
88                 .ipv4("10.16.123.234")
89                 .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
90                 .correlationId("NOKQTFCOC540002E")
91                 .serialNumber("QTFCOC540002E")
92                 .equipVendor("nokia")
93                 .equipModel("3310")
94                 .equipType("type")
95                 .nfRole("gNB")
96                 .swVersion("v4.5.0.1")
97                 .additionalFields(jsonObject)
98                 .build();
99         //when
100         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
101         JsonElement jsonElement = new JsonParser().parse(parsed);
102         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
103             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
104         //ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser
105         //    .getJsonObject(Mono.just((message))).blockFirst();
106         //then
107         //Assertions.assertNotNull(consumerDmaapModel);
108         //Assertions.assertEquals(expectedObject, consumerDmaapModel);
109     }
110
111     @Test
112     void whenPassingJsonWithoutAdditionalFields_validationNotThrowingAnException() {
113         //given
114         String message = "[{\"event\": {"
115             + "\"commonEventHeader\": { "
116             + " \"sourceName\":\"NOKQTFCOC540002E\","
117             + " \"nfNamingCode\":\"gNB\" "
118             + "},"
119             + "\"pnfRegistrationFields\": {"
120             + " \"vendorName\": \"nokia\","
121             + " \"serialNumber\": \"QTFCOC540002E\","
122             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
123             + " \"modelNumber\": \"3310\","
124             + " \"unitType\": \"type\",\n"
125             + " \"unitFamily\": \"BBU\","
126             + " \"oamV4IpAddress\": \"10.16.123.234\","
127             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
128             + " \"softwareVersion\": \"v4.5.0.1\""
129             + "}}}]";
130
131         String parsed = "{\"event\": {"
132             + "\"commonEventHeader\": { "
133             + " \"sourceName\":\"NOKQTFCOC540002E\","
134             + " \"nfNamingCode\":\"gNB\" "
135             + "},"
136             + "\"pnfRegistrationFields\": {"
137             + " \"vendorName\": \"nokia\","
138             + " \"serialNumber\": \"QTFCOC540002E\","
139             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
140             + " \"modelNumber\": \"3310\","
141             + " \"unitType\": \"type\",\n"
142             + " \"unitFamily\": \"BBU\","
143             + " \"oamV4IpAddress\": \"10.16.123.234\","
144             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
145             + " \"softwareVersion\": \"v4.5.0.1\""
146             + "}}}";
147
148         ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
149             .correlationId("NOKQTFCOC540002E")
150             .serialNumber("QTFCOC540002E")
151             .ipv4("10.16.123.234")
152             .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
153             .equipVendor("nokia")
154             .equipModel("3310")
155             .equipType("type")
156             .nfRole("gNB")
157             .swVersion("v4.5.0.1")
158             .build();
159         //when
160         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
161         JsonElement jsonElement = new JsonParser().parse(parsed);
162         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
163             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
164         //ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser
165         //    .getJsonObject(Mono.just((message))).blockFirst();
166         //then
167         //Assertions.assertNotNull(consumerDmaapModel);
168         //Assertions.assertEquals(expectedObject, consumerDmaapModel);
169     }
170
171     @Test
172     void whenPassingJsonWithEmptyAdditionalFields_validationNotThrowingAnException() {
173         //given
174         String message = "[{\"event\": {"
175             + "\"commonEventHeader\": { "
176             + " \"sourceName\":\"NOKQTFCOC540002E\","
177             + " \"nfNamingCode\":\"gNB\" "
178             + "},"
179             + "\"pnfRegistrationFields\": {"
180             + " \"vendorName\": \"nokia\","
181             + " \"serialNumber\": \"QTFCOC540002E\","
182             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
183             + " \"modelNumber\": \"3310\","
184             + " \"unitType\": \"type\",\n"
185             + " \"unitFamily\": \"BBU\","
186             + " \"softwareVersion\": \"v4.5.0.1\","
187             + " \"oamV4IpAddress\": \"10.16.123.234\","
188             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
189             + " \"additionalFields\": {}"
190             + "}}}]";
191
192         String parsed = "{\"event\": {"
193             + "\"commonEventHeader\": { "
194             + " \"sourceName\":\"NOKQTFCOC540002E\","
195             + " \"nfNamingCode\":\"gNB\" "
196             + "},"
197             + "\"pnfRegistrationFields\": {"
198             + " \"vendorName\": \"nokia\","
199             + " \"serialNumber\": \"QTFCOC540002E\","
200             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
201             + " \"modelNumber\": \"3310\","
202             + " \"unitType\": \"type\",\n"
203             + " \"unitFamily\": \"BBU\","
204             + " \"softwareVersion\": \"v4.5.0.1\","
205             + " \"oamV4IpAddress\": \"10.16.123.234\","
206             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
207             + " \"additionalFields\": {}"
208             + "}}}";
209
210         ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
211             .correlationId("NOKQTFCOC540002E")
212             .serialNumber("QTFCOC540002E")
213             .ipv4("10.16.123.234")
214             .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
215             .equipVendor("nokia")
216             .equipModel("3310")
217             .equipType("type")
218             .nfRole("gNB")
219             .swVersion("v4.5.0.1")
220             .additionalFields(new JsonObject())
221             .build();
222         //when
223         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
224         JsonElement jsonElement = new JsonParser().parse(parsed);
225         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
226             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
227         //ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser
228         //    .getJsonObject(Mono.just((message))).blockFirst();
229         //then
230        // Assertions.assertNotNull(consumerDmaapModel);
231        // Assertions.assertEquals(expectedObject, consumerDmaapModel);
232     }
233
234     @Test
235     void whenPassingJsonWithoutMandatoryHeaderInformation_validationAddingAnException() {
236         String parsed = "{\"event\": {"
237             + "\"commonEventHeader\": {},"
238             + "\"pnfRegistrationFields\": {"
239             + " \"unitType\": \"AirScale\","
240             + " \"serialNumber\": \"QTFCOC540002E\","
241             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
242             + " \"manufactureDate\": \"1535014037024\","
243             + " \"modelNumber\": \"7BEA\",\n"
244             + " \"lastServiceDate\": \"1535014037024\","
245             + " \"unitFamily\": \"BBU\","
246             + " \"vendorName\": \"Nokia\","
247             + " \"softwareVersion\": \"v4.5.0.1\","
248             + " \"oamV4IpAddress\": \"10.16.123.234\","
249             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
250             + " \"additionalFields\": {}"
251             + "}}}";
252
253         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
254         JsonElement jsonElement = new JsonParser().parse(parsed);
255         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
256             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
257         String incorrectMessage = "[{\"event\": {"
258             + "\"commonEventHeader\": {},"
259             + "\"pnfRegistrationFields\": {"
260             + " \"unitType\": \"AirScale\","
261             + " \"serialNumber\": \"QTFCOC540002E\","
262             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
263             + " \"manufactureDate\": \"1535014037024\","
264             + " \"modelNumber\": \"7BEA\",\n"
265             + " \"lastServiceDate\": \"1535014037024\","
266             + " \"unitFamily\": \"BBU\","
267             + " \"vendorName\": \"Nokia\","
268             + " \"softwareVersion\": \"v4.5.0.1\","
269             + " \"oamV4IpAddress\": \"10.16.123.234\","
270             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
271             + " \"additionalFields\": {}"
272             + "}}}]";
273         //StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(incorrectMessage)))
274         //    .expectSubscription().thenRequest(1).verifyComplete();
275     }
276
277     @Test
278     void whenPassingJsonWithoutSourceName_validationAddingAnException() {
279         String parsed = "{\"event\": {"
280             + "\"commonEventHeader\": {},"
281             + "\"pnfRegistrationFields\": {"
282             + " \"unitType\": \"AirScale\","
283             + " \"serialNumber\": \"QTFCOC540002E\","
284             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
285             + " \"manufactureDate\": \"1535014037024\","
286             + " \"modelNumber\": \"7BEA\",\n"
287             + " \"lastServiceDate\": \"1535014037024\","
288             + " \"unitFamily\": \"BBU\","
289             + " \"vendorName\": \"Nokia\","
290             + " \"softwareVersion\": \"v4.5.0.1\","
291             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
292             + " \"additionalFields\": {}"
293             + "}}}";
294
295         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
296         JsonElement jsonElement = new JsonParser().parse(parsed);
297         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
298             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
299         String jsonWithoutSourceName =
300             "[{\"event\": {"
301                 + "\"commonEventHeader\": {},"
302                 + "\"pnfRegistrationFields\": {"
303                 + " \"unitType\": \"AirScale\","
304                 + " \"serialNumber\": \"QTFCOC540002E\","
305                 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
306                 + " \"manufactureDate\": \"1535014037024\","
307                 + " \"modelNumber\": \"7BEA\",\n"
308                 + " \"lastServiceDate\": \"1535014037024\","
309                 + " \"unitFamily\": \"BBU\","
310                 + " \"vendorName\": \"Nokia\","
311                 + " \"softwareVersion\": \"v4.5.0.1\","
312                 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
313                 + " \"additionalFields\": {}"
314                 + "}}}]";
315
316         /*
317         StepVerifier
318             .create(dmaapConsumerJsonParser.getJsonObject(Mono.just(jsonWithoutSourceName)))
319             .expectSubscription().thenRequest(1)
320             .verifyComplete();
321             */
322     }
323
324     @Test
325     void whenPassingJsonWithoutSourceNameValue_validationAddingAnException() {
326         String parsed =
327             "{\"event\": {"
328                 + "\"commonEventHeader\": {\"sourceName\": \"\"},"
329                 + "\"pnfRegistrationFields\": {"
330                 + " \"unitType\": \"AirScale\","
331                 + " \"serialNumber\": \"QTFCOC540002E\","
332                 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
333                 + " \"manufactureDate\": \"1535014037024\","
334                 + " \"modelNumber\": \"7BEA\",\n"
335                 + " \"lastServiceDate\": \"1535014037024\","
336                 + " \"unitFamily\": \"BBU\","
337                 + " \"vendorName\": \"Nokia\","
338                 + " \"softwareVersion\": \"v4.5.0.1\","
339                 + " \"oamV4IpAddress\": \"10.16.123.234\","
340                 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
341                 + " \"additionalFields\": {}"
342                 + "}}}";
343
344         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
345         JsonElement jsonElement = new JsonParser().parse(parsed);
346         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
347             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
348         String jsonWithoutIpInformation =
349             "[{\"event\": {"
350                 + "\"commonEventHeader\": {\"sourceName\": \"\"},"
351                 + "\"pnfRegistrationFields\": {"
352                 + " \"unitType\": \"AirScale\","
353                 + " \"serialNumber\": \"QTFCOC540002E\","
354                 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
355                 + " \"manufactureDate\": \"1535014037024\","
356                 + " \"modelNumber\": \"7BEA\",\n"
357                 + " \"lastServiceDate\": \"1535014037024\","
358                 + " \"unitFamily\": \"BBU\","
359                 + " \"vendorName\": \"Nokia\","
360                 + " \"softwareVersion\": \"v4.5.0.1\","
361                 + " \"oamV4IpAddress\": \"10.16.123.234\","
362                 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
363                 + " \"additionalFields\": {}"
364                 + "}}}]";
365         //StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(jsonWithoutIpInformation)))
366         //    .expectSubscription().thenRequest(1).verifyComplete();
367     }
368
369     @Test
370     void whenPassingCorrectJsonWithoutIpv4_validationNotThrowingAnException() {
371         //given
372         String message = "[{\"event\": {"
373             + "\"commonEventHeader\": { "
374             + " \"sourceName\":\"NOKQTFCOC540002E\","
375             + " \"nfNamingCode\":\"gNB\" "
376             + "},"
377             + "\"pnfRegistrationFields\": {"
378             + " \"vendorName\": \"nokia\","
379             + " \"serialNumber\": \"QTFCOC540002E\","
380             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
381             + " \"modelNumber\": \"3310\","
382             + " \"unitType\": \"type\",\n"
383             + " \"unitFamily\": \"BBU\","
384             + " \"softwareVersion\": \"v4.5.0.1\","
385             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\""
386             + "}}}]";
387
388         String parsed = "{\"event\": {"
389             + "\"commonEventHeader\": { "
390             + " \"sourceName\":\"NOKQTFCOC540002E\","
391             + " \"nfNamingCode\":\"gNB\" "
392             + "},"
393             + "\"pnfRegistrationFields\": {"
394             + " \"vendorName\": \"nokia\","
395             + " \"serialNumber\": \"QTFCOC540002E\","
396             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
397             + " \"modelNumber\": \"3310\","
398             + " \"unitType\": \"type\",\n"
399             + " \"unitFamily\": \"BBU\","
400             + " \"softwareVersion\": \"v4.5.0.1\","
401             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\""
402             + "}}}";
403
404         //when
405         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
406         JsonElement jsonElement = new JsonParser().parse(parsed);
407         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
408             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
409
410         /*
411         dmaapConsumerJsonParser.getJsonObject(Mono.just((message)));
412         ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just((message)))
413             .blockFirst();
414         //then
415         ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
416             .ipv4("")
417             .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
418             .correlationId("NOKQTFCOC540002E")
419             .serialNumber("QTFCOC540002E")
420             .equipVendor("nokia")
421             .equipModel("3310")
422             .equipType("type")
423             .nfRole("gNB")
424             .swVersion("v4.5.0.1")
425             .build();
426         Assertions.assertNotNull(consumerDmaapModel);
427         Assertions.assertEquals(expectedObject, consumerDmaapModel);
428         */
429     }
430
431     @Test
432     void whenPassingCorrectJsonWithoutIpv6_validationNotThrowingAnException() {
433         //given
434         String message = "[{\"event\": {"
435             + "\"commonEventHeader\": { "
436             + " \"sourceName\":\"NOKQTFCOC540002E\","
437             + " \"nfNamingCode\":\"gNB\" "
438             + "},"
439             + "\"pnfRegistrationFields\": {"
440             + " \"vendorName\": \"nokia\","
441             + " \"serialNumber\": \"QTFCOC540002E\","
442             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
443             + " \"modelNumber\": \"3310\","
444             + " \"unitType\": \"type\",\n"
445             + " \"unitFamily\": \"BBU\","
446             + " \"oamV4IpAddress\": \"10.16.123.234\","
447             + " \"softwareVersion\": \"v4.5.0.1\""
448             + "}}}]";
449
450
451         String parsed = "{\"event\": {"
452             + "\"commonEventHeader\": { "
453             + " \"sourceName\":\"NOKQTFCOC540002E\","
454             + " \"nfNamingCode\":\"gNB\" "
455             + "},"
456             + "\"pnfRegistrationFields\": {"
457             + " \"vendorName\": \"nokia\","
458             + " \"serialNumber\": \"QTFCOC540002E\","
459             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
460             + " \"modelNumber\": \"3310\","
461             + " \"unitType\": \"type\",\n"
462             + " \"unitFamily\": \"BBU\","
463             + " \"oamV4IpAddress\": \"10.16.123.234\","
464             + " \"softwareVersion\": \"v4.5.0.1\""
465             + "}}}";
466
467
468         ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
469             .ipv4("10.16.123.234")
470             .ipv6("")
471             .correlationId("NOKQTFCOC540002E")
472             .serialNumber("QTFCOC540002E")
473             .equipVendor("nokia")
474             .equipModel("3310")
475             .equipType("type")
476             .nfRole("gNB")
477             .swVersion("v4.5.0.1")
478             .build();
479         //when
480         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
481         JsonElement jsonElement = new JsonParser().parse(parsed);
482         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
483             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
484
485         /*
486         ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just((message)))
487             .blockFirst();
488         //then
489         Assertions.assertNotNull(consumerDmaapModel);
490         Assertions.assertEquals(expectedObject, consumerDmaapModel);
491         */
492     }
493
494     @Test
495     void whenPassingCorrectJsonWithoutIpv4andIpv6_validationAddingAnException() {
496         //given
497         String message = "[{\"event\": {"
498             + "\"commonEventHeader\": { "
499             + " \"sourceName\":\"NOKQTFCOC540002E\","
500             + " \"nfNamingCode\":\"gNB\" "
501             + "},"
502             + "\"pnfRegistrationFields\": {"
503             + " \"vendorName\": \"nokia\","
504             + " \"serialNumber\": \"QTFCOC540002E\","
505             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
506             + " \"modelNumber\": \"3310\","
507             + " \"unitType\": \"type\",\n"
508             + " \"unitFamily\": \"BBU\","
509             + " \"softwareVersion\": \"v4.5.0.1\","
510             + " \"additionalFields\": {}"
511             + "}}}]";
512
513         String parsed = "{\"event\": {"
514             + "\"commonEventHeader\": { "
515             + " \"sourceName\":\"NOKQTFCOC540002E\","
516             + " \"nfNamingCode\":\"gNB\" "
517             + "},"
518             + "\"pnfRegistrationFields\": {"
519             + " \"vendorName\": \"nokia\","
520             + " \"serialNumber\": \"QTFCOC540002E\","
521             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
522             + " \"modelNumber\": \"3310\","
523             + " \"unitType\": \"type\",\n"
524             + " \"unitFamily\": \"BBU\","
525             + " \"softwareVersion\": \"v4.5.0.1\","
526             + " \"additionalFields\": {}"
527             + "}}}";
528
529         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
530         JsonElement jsonElement = new JsonParser().parse(parsed);
531         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
532             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
533        // StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(message)))
534        //     .expectSubscription().thenRequest(1).verifyComplete();
535
536     }
537
538     @Test
539     void whenPassingJsonWithoutIpInformation_validationAddingAnException() {
540         String parsed =
541             "{\"event\": {"
542                 + "\"commonEventHeader\": {\"sourceName\": \"NOKQTFCOC540002E\"},"
543                 + "\"pnfRegistrationFields\": {"
544                 + " \"unitType\": \"AirScale\","
545                 + " \"serialNumber\": \"QTFCOC540002E\","
546                 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
547                 + " \"manufactureDate\": \"1535014037024\","
548                 + " \"modelNumber\": \"7BEA\",\n"
549                 + " \"lastServiceDate\": \"1535014037024\","
550                 + " \"unitFamily\": \"BBU\","
551                 + " \"vendorName\": \"Nokia\","
552                 + " \"softwareVersion\": \"v4.5.0.1\","
553                 + " \"oamV4IpAddress\": \"\","
554                 + " \"oamV6IpAddress\": \"\","
555                 + " \"additionalFields\": {}"
556                 + "}}}";
557
558         DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
559         JsonElement jsonElement = new JsonParser().parse(parsed);
560         Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
561             .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
562         String jsonWithoutIpInformation =
563             "[{\"event\": {"
564                 + "\"commonEventHeader\": {\"sourceName\": \"NOKQTFCOC540002E\"},"
565                 + "\"pnfRegistrationFields\": {"
566                 + " \"unitType\": \"AirScale\","
567                 + " \"serialNumber\": \"QTFCOC540002E\","
568                 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
569                 + " \"manufactureDate\": \"1535014037024\","
570                 + " \"modelNumber\": \"7BEA\",\n"
571                 + " \"lastServiceDate\": \"1535014037024\","
572                 + " \"unitFamily\": \"BBU\","
573                 + " \"vendorName\": \"Nokia\","
574                 + " \"softwareVersion\": \"v4.5.0.1\","
575                 + " \"oamV4IpAddress\": \"\","
576                 + " \"oamV6IpAddress\": \"\","
577                 + " \"additionalFields\": {}"
578                 + "}}}]";
579         //StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(jsonWithoutIpInformation)))
580         //    .expectSubscription().thenRequest(1).verifyComplete();
581     }
582
583     @Test
584     void whenPassingCorrectJsoArrayWithoutIpv4_validationNotThrowingAnException() {
585         //given
586         String message = "[{\"event\": {"
587             + "\"commonEventHeader\": { "
588             + "  \"sourceName\":\"NOKQTFCOC540002E\","
589             + "  \"nfNamingCode\":\"gNB\" "
590             + "  },"
591             + "\"pnfRegistrationFields\": {"
592             + " \"vendorName\": \"nokia\","
593             + " \"serialNumber\": \"QTFCOC540002E\","
594             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
595             + " \"modelNumber\": \"3310\","
596             + " \"unitType\": \"type\",\n"
597             + " \"unitFamily\": \"BBU\","
598             + " \"softwareVersion\": \"v4.5.0.1\","
599             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
600             + " \"additionalFields\": {}"
601             + "}}},"
602             + " {\"event\": {"
603             + "\"commonEventHeader\": { "
604             + " \"sourceName\":\"NOKQTFCOC540002E\","
605             + " \"nfNamingCode\":\"gNB\" "
606             + "},"
607             + "\"pnfRegistrationFields\": {"
608             + " \"vendorName\": \"nokia\","
609             + " \"serialNumber\": \"QTFCOC540002E\","
610             + " \"pnfRegistrationFieldsVersion\": \"2.0\","
611             + " \"modelNumber\": \"3310\","
612             + " \"unitType\": \"type\",\n"
613             + " \"unitFamily\": \"BBU\","
614             + " \"softwareVersion\": \"v4.5.0.1\","
615             + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
616             + " \"additionalFields\": {}"
617             + "}}}]";
618
619         ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
620             .ipv4("")
621             .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
622             .correlationId("NOKQTFCOC540002E")
623             .serialNumber("QTFCOC540002E")
624             .equipVendor("nokia")
625             .equipModel("3310")
626             .equipType("type")
627             .nfRole("gNB")
628             .swVersion("v4.5.0.1")
629             .additionalFields(new JsonObject())
630             .build();
631         //when
632         DmaapConsumerJsonParser dmaapConsumerJsonParser = new DmaapConsumerJsonParser();
633
634         //then
635        // StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(message)))
636        //     .expectSubscription().expectNext(expectedObject).expectNext(expectedObject).verifyComplete();
637     }
638 }