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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.dcaegen2.services.prh.service;
23 import static org.mockito.Mockito.spy;
25 import com.google.gson.JsonElement;
26 import com.google.gson.JsonObject;
27 import com.google.gson.JsonParser;
28 import io.vavr.collection.List;
29 import java.util.Optional;
30 import org.junit.jupiter.api.Assertions;
31 import org.junit.jupiter.api.Test;
32 import org.mockito.Mockito;
33 import org.onap.dcaegen2.services.prh.adapter.aai.api.ConsumerDmaapModel;
34 import org.onap.dcaegen2.services.prh.adapter.aai.api.ImmutableConsumerDmaapModel;
35 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterSubscribeResponse;
36 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterSubscribeResponse;
37 import reactor.core.publisher.Mono;
38 import reactor.test.StepVerifier;
41 * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
43 class DmaapConsumerJsonParserTest {
45 private JsonParser jsonParser = new JsonParser();
48 void whenPassingCorrectJson_validationNotThrowingAnException() {
50 String message = "{\"event\": {"
51 + "\"commonEventHeader\": { "
52 + " \"sourceName\":\"NOKQTFCOC540002E\","
53 + " \"nfNamingCode\":\"gNB\" "
55 + "\"pnfRegistrationFields\": {"
56 + " \"vendorName\": \"nokia\","
57 + " \"serialNumber\": \"QTFCOC540002E\","
58 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
59 + " \"modelNumber\": \"3310\","
60 + " \"unitType\": \"type\",\n"
61 + " \"unitFamily\": \"BBU\","
62 + " \"oamV4IpAddress\": \"10.16.123.234\","
63 + " \"softwareVersion\": \"v4.5.0.1\","
64 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
65 + " \"additionalFields\": {\"attachmentPoint\":\"bla-bla-30-3\",\"cvlan\":\"678\",\"svlan\":\"1005\"}"
68 String parsed = "{\"event\": {"
69 + "\"commonEventHeader\": { "
70 + " \"sourceName\":\"NOKQTFCOC540002E\","
71 + " \"nfNamingCode\":\"gNB\" "
73 + "\"pnfRegistrationFields\": {"
74 + " \"vendorName\": \"nokia\","
75 + " \"serialNumber\": \"QTFCOC540002E\","
76 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
77 + " \"modelNumber\": \"3310\","
78 + " \"unitType\": \"type\",\n"
79 + " \"unitFamily\": \"BBU\","
80 + " \"oamV4IpAddress\": \"10.16.123.234\","
81 + " \"softwareVersion\": \"v4.5.0.1\","
82 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
83 + " \"additionalFields\": {\"attachmentPoint\":\"bla-bla-30-3\",\"cvlan\":\"678\",\"svlan\":\"1005\"}"
86 JsonObject jsonObject = new JsonParser().parse("{\n"
87 + " \"attachmentPoint\": \"bla-bla-30-3\",\n"
88 + " \"cvlan\": \"678\",\n"
89 + " \"svlan\": \"1005\"\n"
90 + " }").getAsJsonObject();
92 ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
93 .ipv4("10.16.123.234")
94 .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
95 .correlationId("NOKQTFCOC540002E")
96 .serialNumber("QTFCOC540002E")
101 .swVersion("v4.5.0.1")
102 .additionalFields(jsonObject)
105 List<JsonElement> messageAsJsonElementList = List.of(message).map(jsonParser::parse);
106 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonElementList).build();
109 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
110 JsonElement jsonElement = jsonParser.parse(parsed);
111 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
112 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
114 ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser
115 .getJsonObject(Mono.just((response))).blockFirst();
117 Assertions.assertNotNull(consumerDmaapModel);
118 Assertions.assertEquals(expectedObject, consumerDmaapModel);
122 void whenPassingJsonWithoutAdditionalFields_validationNotThrowingAnException() {
124 String message = "{\"event\": {"
125 + "\"commonEventHeader\": { "
126 + " \"sourceName\":\"NOKQTFCOC540002E\","
127 + " \"nfNamingCode\":\"gNB\" "
129 + "\"pnfRegistrationFields\": {"
130 + " \"vendorName\": \"nokia\","
131 + " \"serialNumber\": \"QTFCOC540002E\","
132 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
133 + " \"modelNumber\": \"3310\","
134 + " \"unitType\": \"type\",\n"
135 + " \"unitFamily\": \"BBU\","
136 + " \"oamV4IpAddress\": \"10.16.123.234\","
137 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
138 + " \"softwareVersion\": \"v4.5.0.1\""
141 String parsed = "{\"event\": {"
142 + "\"commonEventHeader\": { "
143 + " \"sourceName\":\"NOKQTFCOC540002E\","
144 + " \"nfNamingCode\":\"gNB\" "
146 + "\"pnfRegistrationFields\": {"
147 + " \"vendorName\": \"nokia\","
148 + " \"serialNumber\": \"QTFCOC540002E\","
149 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
150 + " \"modelNumber\": \"3310\","
151 + " \"unitType\": \"type\",\n"
152 + " \"unitFamily\": \"BBU\","
153 + " \"oamV4IpAddress\": \"10.16.123.234\","
154 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
155 + " \"softwareVersion\": \"v4.5.0.1\""
158 ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
159 .correlationId("NOKQTFCOC540002E")
160 .serialNumber("QTFCOC540002E")
161 .ipv4("10.16.123.234")
162 .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
163 .equipVendor("nokia")
167 .swVersion("v4.5.0.1")
169 List<JsonElement> messageAsJsonElementList = List.of(message).map(jsonParser::parse);
170 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonElementList).build();
172 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
173 JsonElement jsonElement = new JsonParser().parse(parsed);
174 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
175 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
176 ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser
177 .getJsonObject(Mono.just((response))).blockFirst();
179 Assertions.assertNotNull(consumerDmaapModel);
180 Assertions.assertEquals(expectedObject, consumerDmaapModel);
184 void whenPassingJsonWithEmptyAdditionalFields_validationNotThrowingAnException() {
186 String message = "{\"event\": {"
187 + "\"commonEventHeader\": { "
188 + " \"sourceName\":\"NOKQTFCOC540002E\","
189 + " \"nfNamingCode\":\"gNB\" "
191 + "\"pnfRegistrationFields\": {"
192 + " \"vendorName\": \"nokia\","
193 + " \"serialNumber\": \"QTFCOC540002E\","
194 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
195 + " \"modelNumber\": \"3310\","
196 + " \"unitType\": \"type\",\n"
197 + " \"unitFamily\": \"BBU\","
198 + " \"softwareVersion\": \"v4.5.0.1\","
199 + " \"oamV4IpAddress\": \"10.16.123.234\","
200 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
201 + " \"additionalFields\": {}"
204 String parsed = "{\"event\": {"
205 + "\"commonEventHeader\": { "
206 + " \"sourceName\":\"NOKQTFCOC540002E\","
207 + " \"nfNamingCode\":\"gNB\" "
209 + "\"pnfRegistrationFields\": {"
210 + " \"vendorName\": \"nokia\","
211 + " \"serialNumber\": \"QTFCOC540002E\","
212 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
213 + " \"modelNumber\": \"3310\","
214 + " \"unitType\": \"type\",\n"
215 + " \"unitFamily\": \"BBU\","
216 + " \"softwareVersion\": \"v4.5.0.1\","
217 + " \"oamV4IpAddress\": \"10.16.123.234\","
218 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
219 + " \"additionalFields\": {}"
222 ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
223 .correlationId("NOKQTFCOC540002E")
224 .serialNumber("QTFCOC540002E")
225 .ipv4("10.16.123.234")
226 .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
227 .equipVendor("nokia")
231 .swVersion("v4.5.0.1")
232 .additionalFields(new JsonObject())
235 List<JsonElement> messageAsJsonElementList = List.of(message).map(jsonParser::parse);
236 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonElementList).build();
239 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
240 JsonElement jsonElement = jsonParser.parse(parsed);
241 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
242 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
244 ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser
245 .getJsonObject(Mono.just((response))).blockFirst();
247 Assertions.assertNotNull(consumerDmaapModel);
248 Assertions.assertEquals(expectedObject, consumerDmaapModel);
252 void whenPassingCorrectJsonWithoutIpv4andIpv6_validationNotThrowingAnException() {
254 String message = "{\"event\": {"
255 + "\"commonEventHeader\": { "
256 + " \"sourceName\":\"NOKQTFCOC540002E\","
257 + " \"nfNamingCode\":\"gNB\" "
259 + "\"pnfRegistrationFields\": {"
260 + " \"vendorName\": \"nokia\","
261 + " \"serialNumber\": \"QTFCOC540002E\","
262 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
263 + " \"modelNumber\": \"3310\","
264 + " \"unitType\": \"type\",\n"
265 + " \"unitFamily\": \"BBU\","
266 + " \"softwareVersion\": \"v4.5.0.1\","
267 + " \"additionalFields\": {}"
270 String parsed = "{\"event\": {"
271 + "\"commonEventHeader\": { "
272 + " \"sourceName\":\"NOKQTFCOC540002E\","
273 + " \"nfNamingCode\":\"gNB\" "
275 + "\"pnfRegistrationFields\": {"
276 + " \"vendorName\": \"nokia\","
277 + " \"serialNumber\": \"QTFCOC540002E\","
278 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
279 + " \"modelNumber\": \"3310\","
280 + " \"unitType\": \"type\",\n"
281 + " \"unitFamily\": \"BBU\","
282 + " \"softwareVersion\": \"v4.5.0.1\","
283 + " \"additionalFields\": {}"
286 ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
287 .correlationId("NOKQTFCOC540002E")
288 .serialNumber("QTFCOC540002E")
291 .equipVendor("nokia")
295 .swVersion("v4.5.0.1")
296 .additionalFields(new JsonObject())
299 List<JsonElement> messageAsJsonElementList = List.of(message).map(jsonParser::parse);
300 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonElementList).build();
303 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
304 JsonElement jsonElement = jsonParser.parse(parsed);
305 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
306 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
308 ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser
309 .getJsonObject(Mono.just((response))).blockFirst();
311 Assertions.assertNotNull(consumerDmaapModel);
312 Assertions.assertEquals(expectedObject, consumerDmaapModel);
317 void whenPassingJsonWithoutMandatoryHeaderInformation_validationAddingAnException() {
318 String parsed = "{\"event\": {"
319 + "\"commonEventHeader\": {},"
320 + "\"pnfRegistrationFields\": {"
321 + " \"unitType\": \"AirScale\","
322 + " \"serialNumber\": \"QTFCOC540002E\","
323 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
324 + " \"manufactureDate\": \"1535014037024\","
325 + " \"modelNumber\": \"7BEA\",\n"
326 + " \"lastServiceDate\": \"1535014037024\","
327 + " \"unitFamily\": \"BBU\","
328 + " \"vendorName\": \"Nokia\","
329 + " \"softwareVersion\": \"v4.5.0.1\","
330 + " \"oamV4IpAddress\": \"10.16.123.234\","
331 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
332 + " \"additionalFields\": {}"
335 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
336 JsonElement jsonElement = jsonParser.parse(parsed);
337 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
338 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
339 String incorrectMessage = "{\"event\": {"
340 + "\"commonEventHeader\": {},"
341 + "\"pnfRegistrationFields\": {"
342 + " \"unitType\": \"AirScale\","
343 + " \"serialNumber\": \"QTFCOC540002E\","
344 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
345 + " \"manufactureDate\": \"1535014037024\","
346 + " \"modelNumber\": \"7BEA\",\n"
347 + " \"lastServiceDate\": \"1535014037024\","
348 + " \"unitFamily\": \"BBU\","
349 + " \"vendorName\": \"Nokia\","
350 + " \"softwareVersion\": \"v4.5.0.1\","
351 + " \"oamV4IpAddress\": \"10.16.123.234\","
352 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
353 + " \"additionalFields\": {}"
356 List<JsonElement> incorrectMessageAsJsonElementList = List.of(incorrectMessage).map(jsonParser::parse);
357 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(incorrectMessageAsJsonElementList).build();
359 StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response)))
360 .expectSubscription().thenRequest(1).verifyComplete();
364 void whenPassingJsonWithoutSourceName_validationAddingAnException() {
365 String parsed = "{\"event\": {"
366 + "\"commonEventHeader\": {},"
367 + "\"pnfRegistrationFields\": {"
368 + " \"unitType\": \"AirScale\","
369 + " \"serialNumber\": \"QTFCOC540002E\","
370 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
371 + " \"manufactureDate\": \"1535014037024\","
372 + " \"modelNumber\": \"7BEA\",\n"
373 + " \"lastServiceDate\": \"1535014037024\","
374 + " \"unitFamily\": \"BBU\","
375 + " \"vendorName\": \"Nokia\","
376 + " \"softwareVersion\": \"v4.5.0.1\","
377 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
378 + " \"additionalFields\": {}"
381 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
382 JsonElement jsonElement = jsonParser.parse(parsed);
383 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
384 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
385 String jsonWithoutSourceName =
387 + "\"commonEventHeader\": {},"
388 + "\"pnfRegistrationFields\": {"
389 + " \"unitType\": \"AirScale\","
390 + " \"serialNumber\": \"QTFCOC540002E\","
391 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
392 + " \"manufactureDate\": \"1535014037024\","
393 + " \"modelNumber\": \"7BEA\",\n"
394 + " \"lastServiceDate\": \"1535014037024\","
395 + " \"unitFamily\": \"BBU\","
396 + " \"vendorName\": \"Nokia\","
397 + " \"softwareVersion\": \"v4.5.0.1\","
398 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
399 + " \"additionalFields\": {}"
402 List<JsonElement> jsonWithoutSourceNameAsJsonElementList = List.of(jsonWithoutSourceName).map(jsonParser::parse);
403 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(jsonWithoutSourceNameAsJsonElementList).build();
405 .create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response)))
406 .expectSubscription().thenRequest(1)
412 void whenPassingJsonWithoutSourceNameValue_validationAddingAnException() {
415 + "\"commonEventHeader\": {\"sourceName\": \"\"},"
416 + "\"pnfRegistrationFields\": {"
417 + " \"unitType\": \"AirScale\","
418 + " \"serialNumber\": \"QTFCOC540002E\","
419 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
420 + " \"manufactureDate\": \"1535014037024\","
421 + " \"modelNumber\": \"7BEA\",\n"
422 + " \"lastServiceDate\": \"1535014037024\","
423 + " \"unitFamily\": \"BBU\","
424 + " \"vendorName\": \"Nokia\","
425 + " \"softwareVersion\": \"v4.5.0.1\","
426 + " \"oamV4IpAddress\": \"10.16.123.234\","
427 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
428 + " \"additionalFields\": {}"
431 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
432 JsonElement jsonElement = jsonParser.parse(parsed);
433 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
434 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
435 String jsonWithoutIpInformation =
437 + "\"commonEventHeader\": {\"sourceName\": \"\"},"
438 + "\"pnfRegistrationFields\": {"
439 + " \"unitType\": \"AirScale\","
440 + " \"serialNumber\": \"QTFCOC540002E\","
441 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
442 + " \"manufactureDate\": \"1535014037024\","
443 + " \"modelNumber\": \"7BEA\",\n"
444 + " \"lastServiceDate\": \"1535014037024\","
445 + " \"unitFamily\": \"BBU\","
446 + " \"vendorName\": \"Nokia\","
447 + " \"softwareVersion\": \"v4.5.0.1\","
448 + " \"oamV4IpAddress\": \"10.16.123.234\","
449 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
450 + " \"additionalFields\": {}"
453 List<JsonElement> jsonWithoutIpInformationAsJsonElementList = List.of(jsonWithoutIpInformation).map(jsonParser::parse);
454 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(jsonWithoutIpInformationAsJsonElementList).build();
456 StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response)))
457 .expectSubscription().thenRequest(1).verifyComplete();
461 void whenPassingCorrectJsonWithoutIpv4_validationNotThrowingAnException() {
463 String message = "{\"event\": {"
464 + "\"commonEventHeader\": { "
465 + " \"sourceName\":\"NOKQTFCOC540002E\","
466 + " \"nfNamingCode\":\"gNB\" "
468 + "\"pnfRegistrationFields\": {"
469 + " \"vendorName\": \"nokia\","
470 + " \"serialNumber\": \"QTFCOC540002E\","
471 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
472 + " \"modelNumber\": \"3310\","
473 + " \"unitType\": \"type\",\n"
474 + " \"unitFamily\": \"BBU\","
475 + " \"softwareVersion\": \"v4.5.0.1\","
476 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\""
479 String parsed = "{\"event\": {"
480 + "\"commonEventHeader\": { "
481 + " \"sourceName\":\"NOKQTFCOC540002E\","
482 + " \"nfNamingCode\":\"gNB\" "
484 + "\"pnfRegistrationFields\": {"
485 + " \"vendorName\": \"nokia\","
486 + " \"serialNumber\": \"QTFCOC540002E\","
487 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
488 + " \"modelNumber\": \"3310\","
489 + " \"unitType\": \"type\",\n"
490 + " \"unitFamily\": \"BBU\","
491 + " \"softwareVersion\": \"v4.5.0.1\","
492 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\""
495 List<JsonElement> messageAsJsonElementList = List.of(message).map(jsonParser::parse);
496 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonElementList).build();
498 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
499 JsonElement jsonElement = jsonParser.parse(parsed);
500 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
501 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
503 dmaapConsumerJsonParser.getJsonObject(Mono.just((response)));
504 ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just(response))
507 ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
509 .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
510 .correlationId("NOKQTFCOC540002E")
511 .serialNumber("QTFCOC540002E")
512 .equipVendor("nokia")
516 .swVersion("v4.5.0.1")
518 Assertions.assertNotNull(consumerDmaapModel);
519 Assertions.assertEquals(expectedObject, consumerDmaapModel);
524 void whenPassingCorrectJsonWithoutIpv6_validationNotThrowingAnException() {
526 String message = "{\"event\": {"
527 + "\"commonEventHeader\": { "
528 + " \"sourceName\":\"NOKQTFCOC540002E\","
529 + " \"nfNamingCode\":\"gNB\" "
531 + "\"pnfRegistrationFields\": {"
532 + " \"vendorName\": \"nokia\","
533 + " \"serialNumber\": \"QTFCOC540002E\","
534 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
535 + " \"modelNumber\": \"3310\","
536 + " \"unitType\": \"type\",\n"
537 + " \"unitFamily\": \"BBU\","
538 + " \"oamV4IpAddress\": \"10.16.123.234\","
539 + " \"softwareVersion\": \"v4.5.0.1\""
542 String parsed = "{\"event\": {"
543 + "\"commonEventHeader\": { "
544 + " \"sourceName\":\"NOKQTFCOC540002E\","
545 + " \"nfNamingCode\":\"gNB\" "
547 + "\"pnfRegistrationFields\": {"
548 + " \"vendorName\": \"nokia\","
549 + " \"serialNumber\": \"QTFCOC540002E\","
550 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
551 + " \"modelNumber\": \"3310\","
552 + " \"unitType\": \"type\",\n"
553 + " \"unitFamily\": \"BBU\","
554 + " \"oamV4IpAddress\": \"10.16.123.234\","
555 + " \"softwareVersion\": \"v4.5.0.1\""
558 ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
559 .ipv4("10.16.123.234")
561 .correlationId("NOKQTFCOC540002E")
562 .serialNumber("QTFCOC540002E")
563 .equipVendor("nokia")
567 .swVersion("v4.5.0.1")
570 List<JsonElement> messageAsJsonElementList = List.of(message).map(jsonParser::parse);
571 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonElementList).build();
574 DmaapConsumerJsonParser dmaapConsumerJsonParser = spy(new DmaapConsumerJsonParser());
575 JsonElement jsonElement = jsonParser.parse(parsed);
576 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject()))
577 .when(dmaapConsumerJsonParser).getJsonObjectFromAnArray(jsonElement);
578 ConsumerDmaapModel consumerDmaapModel = dmaapConsumerJsonParser.getJsonObject(Mono.just(response))
582 Assertions.assertNotNull(consumerDmaapModel);
583 Assertions.assertEquals(expectedObject, consumerDmaapModel);
588 void whenPassingCorrectJsonArrayWithoutIpv4_validationNotThrowingAnException() {
590 String message = "[{\"event\": {"
591 + "\"commonEventHeader\": { "
592 + " \"sourceName\":\"NOKQTFCOC540002E\","
593 + " \"nfNamingCode\":\"gNB\" "
595 + "\"pnfRegistrationFields\": {"
596 + " \"vendorName\": \"nokia\","
597 + " \"serialNumber\": \"QTFCOC540002E\","
598 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
599 + " \"modelNumber\": \"3310\","
600 + " \"unitType\": \"type\",\n"
601 + " \"unitFamily\": \"BBU\","
602 + " \"softwareVersion\": \"v4.5.0.1\","
603 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
604 + " \"additionalFields\": {}"
607 + "\"commonEventHeader\": { "
608 + " \"sourceName\":\"NOKQTFCOC540002E\","
609 + " \"nfNamingCode\":\"gNB\" "
611 + "\"pnfRegistrationFields\": {"
612 + " \"vendorName\": \"nokia\","
613 + " \"serialNumber\": \"QTFCOC540002E\","
614 + " \"pnfRegistrationFieldsVersion\": \"2.0\","
615 + " \"modelNumber\": \"3310\","
616 + " \"unitType\": \"type\",\n"
617 + " \"unitFamily\": \"BBU\","
618 + " \"softwareVersion\": \"v4.5.0.1\","
619 + " \"oamV6IpAddress\": \"0:0:0:0:0:FFFF:0A10:7BEA\","
620 + " \"additionalFields\": {}"
623 ConsumerDmaapModel expectedObject = ImmutableConsumerDmaapModel.builder()
625 .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
626 .correlationId("NOKQTFCOC540002E")
627 .serialNumber("QTFCOC540002E")
628 .equipVendor("nokia")
632 .swVersion("v4.5.0.1")
633 .additionalFields(new JsonObject())
636 List<JsonElement> messageAsJsonElementList = List.empty();
637 for(JsonElement el : jsonParser.parse(message).getAsJsonArray()) {
638 messageAsJsonElementList = messageAsJsonElementList.append(el);
641 MessageRouterSubscribeResponse response = ImmutableMessageRouterSubscribeResponse.builder().items(messageAsJsonElementList).build();
644 DmaapConsumerJsonParser dmaapConsumerJsonParser = new DmaapConsumerJsonParser();
647 StepVerifier.create(dmaapConsumerJsonParser.getJsonObject(Mono.just(response))).expectSubscription().expectNext(expectedObject).expectNext(expectedObject).verifyComplete();