2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2018 NOKIA Intellectual Property, 2018-2019 Nordix Foundation. All rights reserved.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 * ============LICENSE_END=========================================================
19 package org.onap.dcaegen2.collectors.datafile.service;
21 import static org.mockito.Mockito.spy;
23 import com.google.gson.JsonElement;
24 import com.google.gson.JsonParser;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Optional;
30 import org.junit.jupiter.api.Test;
31 import org.mockito.Mockito;
32 import org.onap.dcaegen2.collectors.datafile.exceptions.DmaapNotFoundException;
33 import org.onap.dcaegen2.collectors.datafile.ftp.Scheme;
34 import org.onap.dcaegen2.collectors.datafile.model.FileData;
35 import org.onap.dcaegen2.collectors.datafile.model.FileReadyMessage;
36 import org.onap.dcaegen2.collectors.datafile.model.ImmutableFileData;
37 import org.onap.dcaegen2.collectors.datafile.model.ImmutableFileReadyMessage;
38 import org.onap.dcaegen2.collectors.datafile.model.ImmutableMessageMetaData;
39 import org.onap.dcaegen2.collectors.datafile.model.MessageMetaData;
40 import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage;
41 import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage.AdditionalField;
43 import reactor.core.publisher.Mono;
44 import reactor.test.StepVerifier;
47 * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
48 * @author <a href="mailto:henrik.b.andersson@est.tech">Henrik Andersson</a>
50 class JsonMessageParserTest {
51 private static final String NR_RADIO_ERICSSON_EVENT_NAME = "Noti_NrRadio-Ericsson_FileReady";
52 private static final String PRODUCT_NAME = "NrRadio";
53 private static final String VENDOR_NAME = "Ericsson";
54 private static final String LAST_EPOCH_MICROSEC = "1519837825682";
55 private static final String SOURCE_NAME = "5GRAN_DU";
56 private static final String START_EPOCH_MICROSEC = "1519837825682";
57 private static final String TIME_ZONE_OFFSET = "UTC+05:00";
58 private static final String PM_FILE_NAME = "A20161224.1030-1045.bin.gz";
59 private static final String LOCATION = "ftpes://192.168.0.101:22/ftp/rop/" + PM_FILE_NAME;
60 private static final String GZIP_COMPRESSION = "gzip";
61 private static final String FILE_FORMAT_TYPE = "org.3GPP.32.435#measCollec";
62 private static final String FILE_FORMAT_VERSION = "V10";
63 private static final String CHANGE_IDENTIFIER = "PM_MEAS_FILES";
64 private static final String INCORRECT_CHANGE_IDENTIFIER = "INCORRECT_PM_MEAS_FILES";
65 private static final String CHANGE_TYPE = "FileReady";
66 private static final String INCORRECT_CHANGE_TYPE = "IncorrectFileReady";
67 private static final String NOTIFICATION_FIELDS_VERSION = "1.0";
70 void whenPassingCorrectJson_oneFileReadyMessage() throws DmaapNotFoundException {
71 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
72 .name(PM_FILE_NAME) //
73 .location(LOCATION) //
74 .compression(GZIP_COMPRESSION) //
75 .fileFormatType(FILE_FORMAT_TYPE) //
76 .fileFormatVersion(FILE_FORMAT_VERSION) //
78 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
79 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
80 .changeIdentifier(CHANGE_IDENTIFIER) //
81 .changeType(CHANGE_TYPE) //
82 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
83 .addAdditionalField(additionalField) //
86 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
87 .productName(PRODUCT_NAME) //
88 .vendorName(VENDOR_NAME) //
89 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
90 .sourceName(SOURCE_NAME) //
91 .startEpochMicrosec(START_EPOCH_MICROSEC) //
92 .timeZoneOffset(TIME_ZONE_OFFSET) //
93 .changeIdentifier(CHANGE_IDENTIFIER) //
94 .changeType(CHANGE_TYPE) //
96 FileData expectedFileData = ImmutableFileData.builder() //
97 .name(PM_FILE_NAME) //
98 .location(LOCATION) //
99 .scheme(Scheme.FTPS) //
100 .compression(GZIP_COMPRESSION) //
101 .fileFormatType(FILE_FORMAT_TYPE) //
102 .fileFormatVersion(FILE_FORMAT_VERSION) //
104 List<FileData> files = new ArrayList<>();
105 files.add(expectedFileData);
106 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder()
107 .pnfName(SOURCE_NAME) //
108 .messageMetaData(messageMetaData) //
112 String messageString = message.toString();
113 String parsedString = message.getParsed();
114 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
115 JsonElement jsonElement = new JsonParser().parse(parsedString);
116 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
117 .getJsonObjectFromAnArray(jsonElement);
119 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
120 .expectSubscription().expectNext(expectedMessage).verifyComplete();
124 void whenPassingCorrectJsonWithTwoEvents_twoMessages() throws DmaapNotFoundException {
125 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
126 .name(PM_FILE_NAME) //
127 .location(LOCATION) //
128 .compression(GZIP_COMPRESSION) //
129 .fileFormatType(FILE_FORMAT_TYPE) //
130 .fileFormatVersion(FILE_FORMAT_VERSION) //
132 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
133 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
134 .changeIdentifier(CHANGE_IDENTIFIER) //
135 .changeType(CHANGE_TYPE) //
136 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
137 .addAdditionalField(additionalField) //
140 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
141 .productName(PRODUCT_NAME) //
142 .vendorName(VENDOR_NAME) //
143 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
144 .sourceName(SOURCE_NAME) //
145 .startEpochMicrosec(START_EPOCH_MICROSEC) //
146 .timeZoneOffset(TIME_ZONE_OFFSET) //
147 .changeIdentifier(CHANGE_IDENTIFIER) //
148 .changeType(CHANGE_TYPE) //
150 FileData expectedFileData = ImmutableFileData.builder() //
151 .name(PM_FILE_NAME) //
152 .location(LOCATION) //
153 .scheme(Scheme.FTPS) //
154 .compression(GZIP_COMPRESSION) //
155 .fileFormatType(FILE_FORMAT_TYPE) //
156 .fileFormatVersion(FILE_FORMAT_VERSION) //
158 List<FileData> files = new ArrayList<>();
159 files.add(expectedFileData);
160 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
161 .pnfName(SOURCE_NAME) //
162 .messageMetaData(messageMetaData) //
166 String parsedString = message.getParsed();
167 String messageString = "[" + parsedString + "," + parsedString + "]";
168 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
169 JsonElement jsonElement = new JsonParser().parse(parsedString);
170 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
171 .getJsonObjectFromAnArray(jsonElement);
173 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
174 .expectSubscription().expectNext(expectedMessage).expectNext(expectedMessage).verifyComplete();
178 void whenPassingCorrectJsonWithoutLocation_noMessage() {
179 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
180 .name(PM_FILE_NAME) //
181 .compression(GZIP_COMPRESSION) //
182 .fileFormatType(FILE_FORMAT_TYPE) //
183 .fileFormatVersion(FILE_FORMAT_VERSION) //
185 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
186 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
187 .changeIdentifier(CHANGE_IDENTIFIER) //
188 .changeType(CHANGE_TYPE) //
189 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
190 .addAdditionalField(additionalField) //
193 String messageString = message.toString();
194 String parsedString = message.getParsed();
195 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
196 JsonElement jsonElement = new JsonParser().parse(parsedString);
197 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
198 .getJsonObjectFromAnArray(jsonElement);
200 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
201 .expectSubscription().expectNextCount(0).verifyComplete();
205 void whenPassingCorrectJsonWithTwoEventsFirstNoHeader_oneFileDatan() throws DmaapNotFoundException {
206 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
207 .name(PM_FILE_NAME) //
208 .location(LOCATION) //
209 .compression(GZIP_COMPRESSION) //
210 .fileFormatType(FILE_FORMAT_TYPE) //
211 .fileFormatVersion(FILE_FORMAT_VERSION) //
213 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
214 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
215 .changeIdentifier(CHANGE_IDENTIFIER) //
216 .changeType(CHANGE_TYPE) //
217 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
218 .addAdditionalField(additionalField) //
221 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
222 .productName(PRODUCT_NAME) //
223 .vendorName(VENDOR_NAME) //
224 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
225 .sourceName(SOURCE_NAME) //
226 .startEpochMicrosec(START_EPOCH_MICROSEC) //
227 .timeZoneOffset(TIME_ZONE_OFFSET) //
228 .changeIdentifier(CHANGE_IDENTIFIER) //
229 .changeType(CHANGE_TYPE) //
231 FileData expectedFileData = ImmutableFileData.builder() //
232 .name(PM_FILE_NAME) //
233 .location(LOCATION) //
234 .scheme(Scheme.FTPS) //
235 .compression(GZIP_COMPRESSION) //
236 .fileFormatType(FILE_FORMAT_TYPE) //
237 .fileFormatVersion(FILE_FORMAT_VERSION) //
239 List<FileData> files = new ArrayList<>();
240 files.add(expectedFileData);
241 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
242 .pnfName(SOURCE_NAME) //
243 .messageMetaData(messageMetaData) //
247 String parsedString = message.getParsed();
248 String messageString = "[{\"event\":{}}," + parsedString + "]";
249 JsonMessageParser jsonMessageParserUnderTest = new JsonMessageParser();
251 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
252 .expectSubscription().expectNext(expectedMessage).verifyComplete();
256 void whenPassingCorrectJsonWithFaultyEventName_noFileData() {
257 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
258 .location(LOCATION) //
259 .compression(GZIP_COMPRESSION) //
260 .fileFormatType(FILE_FORMAT_TYPE) //
261 .fileFormatVersion(FILE_FORMAT_VERSION) //
263 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
264 .eventName("Faulty event name") //
265 .changeIdentifier(CHANGE_IDENTIFIER) //
266 .changeType(CHANGE_TYPE) //
267 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
268 .addAdditionalField(additionalField) //
271 String messageString = message.toString();
272 String parsedString = message.getParsed();
273 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
274 JsonElement jsonElement = new JsonParser().parse(parsedString);
275 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
276 .getJsonObjectFromAnArray(jsonElement);
278 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
279 .expectSubscription().expectComplete().verify();
283 void whenPassingCorrectJsonWithoutName_noFileData() {
284 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
285 .location(LOCATION) //
286 .compression(GZIP_COMPRESSION) //
287 .fileFormatType(FILE_FORMAT_TYPE) //
288 .fileFormatVersion(FILE_FORMAT_VERSION) //
290 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
291 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
292 .changeIdentifier(CHANGE_IDENTIFIER) //
293 .changeType(CHANGE_TYPE) //
294 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
295 .addAdditionalField(additionalField) //
298 String messageString = message.toString();
299 String parsedString = message.getParsed();
300 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
301 JsonElement jsonElement = new JsonParser().parse(parsedString);
302 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
303 .getJsonObjectFromAnArray(jsonElement);
305 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
306 .expectSubscription().expectNextCount(0).verifyComplete();
310 void whenPassingCorrectJsonWithoutAdditionalFields_noFileData() {
311 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
312 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
313 .changeIdentifier(CHANGE_IDENTIFIER) //
314 .changeType(CHANGE_TYPE) //
315 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
318 String messageString = message.toString();
319 String parsedString = message.getParsed();
320 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
321 JsonElement jsonElement = new JsonParser().parse(parsedString);
322 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
323 .getJsonObjectFromAnArray(jsonElement);
325 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
326 .expectSubscription().expectNextCount(0).verifyComplete();
330 void whenPassingCorrectJsonWithoutCompression_noFileData() {
331 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
332 .name(PM_FILE_NAME) //
333 .location(LOCATION) //
334 .fileFormatType(FILE_FORMAT_TYPE) //
335 .fileFormatVersion(FILE_FORMAT_VERSION) //
337 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
338 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
339 .changeIdentifier(CHANGE_IDENTIFIER) //
340 .changeType(CHANGE_TYPE) //
341 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
342 .addAdditionalField(additionalField) //
345 String messageString = message.toString();
346 String parsedString = message.getParsed();
347 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
348 JsonElement jsonElement = new JsonParser().parse(parsedString);
349 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
350 .getJsonObjectFromAnArray(jsonElement);
352 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
353 .expectSubscription().expectNextCount(0).verifyComplete();
357 void whenPassingCorrectJsonWithoutFileFormatType_noFileData() {
358 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
359 .name(PM_FILE_NAME) //
360 .location(LOCATION) //
361 .compression(GZIP_COMPRESSION) //
362 .fileFormatVersion(FILE_FORMAT_VERSION) //
364 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
365 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
366 .changeIdentifier(CHANGE_IDENTIFIER) //
367 .changeType(CHANGE_TYPE) //
368 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
369 .addAdditionalField(additionalField) //
372 String messageString = message.toString();
373 String parsedString = message.getParsed();
374 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
375 JsonElement jsonElement = new JsonParser().parse(parsedString);
376 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
377 .getJsonObjectFromAnArray(jsonElement);
379 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
380 .expectSubscription().expectNextCount(0).verifyComplete();
384 void whenPassingOneCorrectJsonWithoutFileFormatVersionAndOneCorrect_oneFileData() {
385 AdditionalField additionalFaultyField = new JsonMessage.AdditionalFieldBuilder() //
386 .name(PM_FILE_NAME) //
387 .location(LOCATION) //
388 .compression(GZIP_COMPRESSION) //
389 .fileFormatType(FILE_FORMAT_TYPE) //
391 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
392 .name(PM_FILE_NAME) //
393 .location(LOCATION) //
394 .compression(GZIP_COMPRESSION) //
395 .fileFormatType(FILE_FORMAT_TYPE) //
396 .fileFormatVersion(FILE_FORMAT_VERSION) //
398 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
399 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
400 .changeIdentifier(CHANGE_IDENTIFIER) //
401 .changeType(CHANGE_TYPE) //
402 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
403 .addAdditionalField(additionalFaultyField) //
404 .addAdditionalField(additionalField) //
407 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
408 .productName(PRODUCT_NAME) //
409 .vendorName(VENDOR_NAME) //
410 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
411 .sourceName(SOURCE_NAME) //
412 .startEpochMicrosec(START_EPOCH_MICROSEC) //
413 .timeZoneOffset(TIME_ZONE_OFFSET) //
414 .changeIdentifier(CHANGE_IDENTIFIER) //
415 .changeType(CHANGE_TYPE) //
417 FileData expectedFileData = ImmutableFileData.builder() //
418 .name(PM_FILE_NAME) //
419 .location(LOCATION) //
420 .scheme(Scheme.FTPS) //
421 .compression(GZIP_COMPRESSION) //
422 .fileFormatType(FILE_FORMAT_TYPE) //
423 .fileFormatVersion(FILE_FORMAT_VERSION) //
425 List<FileData> files = new ArrayList<>();
426 files.add(expectedFileData);
427 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
428 .pnfName(SOURCE_NAME) //
429 .messageMetaData(messageMetaData) //
433 String messageString = message.toString();
434 String parsedString = message.getParsed();
435 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
436 JsonElement jsonElement = new JsonParser().parse(parsedString);
437 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
438 .getJsonObjectFromAnArray(jsonElement);
440 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
441 .expectSubscription().expectNext(expectedMessage).verifyComplete();
445 void whenPassingJsonWithoutMandatoryHeaderInformation_noFileData() {
446 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
447 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
448 .changeIdentifier("PM_MEAS_FILES_INVALID") //
449 .changeType("FileReady_INVALID") //
450 .notificationFieldsVersion("1.0_INVALID") //
453 String incorrectMessageString = message.toString();
454 String parsedString = message.getParsed();
455 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
456 JsonElement jsonElement = new JsonParser().parse(parsedString);
457 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
458 .getJsonObjectFromAnArray(jsonElement);
460 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(incorrectMessageString)))
461 .expectSubscription().expectComplete().verify();
465 void whenPassingJsonWithNullJsonElement_noFileData() {
466 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
467 JsonElement jsonElement = new JsonParser().parse("{}");
469 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
470 .getJsonObjectFromAnArray(jsonElement);
472 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just("[{}]"))).expectSubscription()
473 .expectComplete().verify();
477 void whenPassingCorrectJsonWithIncorrectChangeType_noFileData() {
478 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
479 .name(PM_FILE_NAME) //
480 .location(LOCATION) //
481 .compression(GZIP_COMPRESSION)
482 .fileFormatVersion(FILE_FORMAT_VERSION) //
484 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
485 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
486 .changeIdentifier(CHANGE_IDENTIFIER) //
487 .changeType(INCORRECT_CHANGE_TYPE) //
488 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
489 .addAdditionalField(additionalField) //
492 String messageString = message.toString();
493 String parsedString = message.getParsed();
494 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
495 JsonElement jsonElement = new JsonParser().parse(parsedString);
496 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
497 .getJsonObjectFromAnArray(jsonElement);
499 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
500 .expectSubscription().expectNextCount(0).expectComplete().verify();
504 void whenPassingCorrectJsonWithIncorrectChangeIdentifier_noFileData() {
505 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
506 .name(PM_FILE_NAME) //
507 .location(LOCATION) //
508 .compression(GZIP_COMPRESSION) //
509 .fileFormatVersion(FILE_FORMAT_VERSION) //
511 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
512 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
513 .changeIdentifier(INCORRECT_CHANGE_IDENTIFIER) //
514 .changeType(CHANGE_TYPE) //
515 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
516 .addAdditionalField(additionalField) //
519 String messageString = message.toString();
520 String parsedString = message.getParsed();
521 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
522 JsonElement jsonElement = new JsonParser().parse(parsedString);
523 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
524 .getJsonObjectFromAnArray(jsonElement);
526 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
527 .expectSubscription().expectComplete().verify();