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;
25 import java.util.ArrayList;
26 import java.util.List;
27 import java.util.Optional;
28 import org.junit.jupiter.api.Test;
29 import org.mockito.Mockito;
30 import org.onap.dcaegen2.collectors.datafile.ftp.Scheme;
31 import org.onap.dcaegen2.collectors.datafile.model.FileData;
32 import org.onap.dcaegen2.collectors.datafile.model.FileReadyMessage;
33 import org.onap.dcaegen2.collectors.datafile.model.ImmutableFileData;
34 import org.onap.dcaegen2.collectors.datafile.model.ImmutableFileReadyMessage;
35 import org.onap.dcaegen2.collectors.datafile.model.ImmutableMessageMetaData;
36 import org.onap.dcaegen2.collectors.datafile.model.MessageMetaData;
37 import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage;
38 import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage.AdditionalField;
39 import reactor.core.publisher.Mono;
40 import reactor.test.StepVerifier;
43 * Tests the JsonMessageParser.
45 * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
46 * @author <a href="mailto:henrik.b.andersson@est.tech">Henrik Andersson</a>
48 class JsonMessageParserTest {
49 private static final String NR_RADIO_ERICSSON_EVENT_NAME = "Noti_NrRadio-Ericsson_FileReady";
50 private static final String PRODUCT_NAME = "NrRadio";
51 private static final String VENDOR_NAME = "Ericsson";
52 private static final String LAST_EPOCH_MICROSEC = "1519837825682";
53 private static final String SOURCE_NAME = "5GRAN_DU";
54 private static final String START_EPOCH_MICROSEC = "1519837825682";
55 private static final String TIME_ZONE_OFFSET = "UTC+05:00";
56 private static final String PM_FILE_NAME = "A20161224.1030-1045.bin.gz";
57 private static final String LOCATION = "ftpes://192.168.0.101:22/ftp/rop/" + PM_FILE_NAME;
58 private static final String GZIP_COMPRESSION = "gzip";
59 private static final String FILE_FORMAT_TYPE = "org.3GPP.32.435#measCollec";
60 private static final String FILE_FORMAT_VERSION = "V10";
61 private static final String CHANGE_IDENTIFIER = "PM_MEAS_FILES";
62 private static final String INCORRECT_CHANGE_IDENTIFIER = "INCORRECT_PM_MEAS_FILES";
63 private static final String CHANGE_TYPE = "FileReady";
64 private static final String INCORRECT_CHANGE_TYPE = "IncorrectFileReady";
65 private static final String NOTIFICATION_FIELDS_VERSION = "1.0";
68 void whenPassingCorrectJson_oneFileReadyMessage() {
69 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
70 .name(PM_FILE_NAME) //
71 .location(LOCATION) //
72 .compression(GZIP_COMPRESSION) //
73 .fileFormatType(FILE_FORMAT_TYPE) //
74 .fileFormatVersion(FILE_FORMAT_VERSION) //
76 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
77 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
78 .changeIdentifier(CHANGE_IDENTIFIER) //
79 .changeType(CHANGE_TYPE) //
80 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
81 .addAdditionalField(additionalField) //
84 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
85 .productName(PRODUCT_NAME) //
86 .vendorName(VENDOR_NAME) //
87 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
88 .sourceName(SOURCE_NAME) //
89 .startEpochMicrosec(START_EPOCH_MICROSEC) //
90 .timeZoneOffset(TIME_ZONE_OFFSET) //
91 .changeIdentifier(CHANGE_IDENTIFIER) //
92 .changeType(CHANGE_TYPE) //
94 FileData expectedFileData = ImmutableFileData.builder() //
95 .name(PM_FILE_NAME) //
96 .location(LOCATION) //
97 .scheme(Scheme.FTPS) //
98 .compression(GZIP_COMPRESSION) //
99 .fileFormatType(FILE_FORMAT_TYPE) //
100 .fileFormatVersion(FILE_FORMAT_VERSION) //
101 .messageMetaData(messageMetaData) //
103 List<FileData> files = new ArrayList<>();
104 files.add(expectedFileData);
105 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
109 String messageString = message.toString();
110 String parsedString = message.getParsed();
111 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
112 JsonElement jsonElement = new JsonParser().parse(parsedString);
113 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
114 .getJsonObjectFromAnArray(jsonElement);
116 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
117 .expectSubscription().expectNext(expectedMessage).verifyComplete();
121 void whenPassingCorrectJsonWithTwoEvents_twoMessages() {
122 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
123 .name(PM_FILE_NAME) //
124 .location(LOCATION) //
125 .compression(GZIP_COMPRESSION) //
126 .fileFormatType(FILE_FORMAT_TYPE) //
127 .fileFormatVersion(FILE_FORMAT_VERSION) //
129 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
130 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
131 .changeIdentifier(CHANGE_IDENTIFIER) //
132 .changeType(CHANGE_TYPE) //
133 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
134 .addAdditionalField(additionalField) //
137 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
138 .productName(PRODUCT_NAME) //
139 .vendorName(VENDOR_NAME) //
140 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
141 .sourceName(SOURCE_NAME) //
142 .startEpochMicrosec(START_EPOCH_MICROSEC) //
143 .timeZoneOffset(TIME_ZONE_OFFSET) //
144 .changeIdentifier(CHANGE_IDENTIFIER) //
145 .changeType(CHANGE_TYPE) //
147 FileData expectedFileData = ImmutableFileData.builder() //
148 .name(PM_FILE_NAME) //
149 .location(LOCATION) //
150 .scheme(Scheme.FTPS) //
151 .compression(GZIP_COMPRESSION) //
152 .fileFormatType(FILE_FORMAT_TYPE) //
153 .fileFormatVersion(FILE_FORMAT_VERSION) //
154 .messageMetaData(messageMetaData) //
156 List<FileData> files = new ArrayList<>();
157 files.add(expectedFileData);
158 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
162 String parsedString = message.getParsed();
163 String messageString = "[" + parsedString + "," + parsedString + "]";
164 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
165 JsonElement jsonElement = new JsonParser().parse(parsedString);
166 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
167 .getJsonObjectFromAnArray(jsonElement);
169 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
170 .expectSubscription().expectNext(expectedMessage).expectNext(expectedMessage).verifyComplete();
174 void whenPassingCorrectJsonWithoutLocation_noMessage() {
175 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
176 .name(PM_FILE_NAME) //
177 .compression(GZIP_COMPRESSION) //
178 .fileFormatType(FILE_FORMAT_TYPE) //
179 .fileFormatVersion(FILE_FORMAT_VERSION) //
181 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
182 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
183 .changeIdentifier(CHANGE_IDENTIFIER) //
184 .changeType(CHANGE_TYPE) //
185 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
186 .addAdditionalField(additionalField) //
189 String messageString = message.toString();
190 String parsedString = message.getParsed();
191 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
192 JsonElement jsonElement = new JsonParser().parse(parsedString);
193 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
194 .getJsonObjectFromAnArray(jsonElement);
196 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
197 .expectSubscription().expectNextCount(0).verifyComplete();
201 void whenPassingCorrectJsonWithTwoEventsFirstNoHeader_oneFileDatan() {
202 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
203 .name(PM_FILE_NAME) //
204 .location(LOCATION) //
205 .compression(GZIP_COMPRESSION) //
206 .fileFormatType(FILE_FORMAT_TYPE) //
207 .fileFormatVersion(FILE_FORMAT_VERSION) //
209 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
210 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
211 .changeIdentifier(CHANGE_IDENTIFIER) //
212 .changeType(CHANGE_TYPE) //
213 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
214 .addAdditionalField(additionalField) //
217 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
218 .productName(PRODUCT_NAME) //
219 .vendorName(VENDOR_NAME) //
220 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
221 .sourceName(SOURCE_NAME) //
222 .startEpochMicrosec(START_EPOCH_MICROSEC) //
223 .timeZoneOffset(TIME_ZONE_OFFSET) //
224 .changeIdentifier(CHANGE_IDENTIFIER) //
225 .changeType(CHANGE_TYPE) //
227 FileData expectedFileData = ImmutableFileData.builder() //
228 .name(PM_FILE_NAME) //
229 .location(LOCATION) //
230 .scheme(Scheme.FTPS) //
231 .compression(GZIP_COMPRESSION) //
232 .fileFormatType(FILE_FORMAT_TYPE) //
233 .fileFormatVersion(FILE_FORMAT_VERSION) //
234 .messageMetaData(messageMetaData) //
236 List<FileData> files = new ArrayList<>();
237 files.add(expectedFileData);
238 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
242 String parsedString = message.getParsed();
243 String messageString = "[{\"event\":{}}," + parsedString + "]";
244 JsonMessageParser jsonMessageParserUnderTest = new JsonMessageParser();
246 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
247 .expectSubscription().expectNext(expectedMessage).verifyComplete();
251 void whenPassingCorrectJsonWithFaultyEventName_noFileData() {
252 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
253 .location(LOCATION) //
254 .compression(GZIP_COMPRESSION) //
255 .fileFormatType(FILE_FORMAT_TYPE) //
256 .fileFormatVersion(FILE_FORMAT_VERSION) //
258 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
259 .eventName("Faulty event name") //
260 .changeIdentifier(CHANGE_IDENTIFIER) //
261 .changeType(CHANGE_TYPE) //
262 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
263 .addAdditionalField(additionalField) //
266 String messageString = message.toString();
267 String parsedString = message.getParsed();
268 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
269 JsonElement jsonElement = new JsonParser().parse(parsedString);
270 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
271 .getJsonObjectFromAnArray(jsonElement);
273 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
274 .expectSubscription().expectComplete().verify();
278 void whenPassingCorrectJsonWithoutName_noFileData() {
279 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
280 .location(LOCATION) //
281 .compression(GZIP_COMPRESSION) //
282 .fileFormatType(FILE_FORMAT_TYPE) //
283 .fileFormatVersion(FILE_FORMAT_VERSION) //
285 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
286 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
287 .changeIdentifier(CHANGE_IDENTIFIER) //
288 .changeType(CHANGE_TYPE) //
289 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
290 .addAdditionalField(additionalField) //
293 String messageString = message.toString();
294 String parsedString = message.getParsed();
295 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
296 JsonElement jsonElement = new JsonParser().parse(parsedString);
297 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
298 .getJsonObjectFromAnArray(jsonElement);
300 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
301 .expectSubscription().expectNextCount(0).verifyComplete();
305 void whenPassingCorrectJsonWithoutAdditionalFields_noFileData() {
306 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
307 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
308 .changeIdentifier(CHANGE_IDENTIFIER) //
309 .changeType(CHANGE_TYPE) //
310 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
313 String messageString = message.toString();
314 String parsedString = message.getParsed();
315 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
316 JsonElement jsonElement = new JsonParser().parse(parsedString);
317 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
318 .getJsonObjectFromAnArray(jsonElement);
320 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
321 .expectSubscription().expectNextCount(0).verifyComplete();
325 void whenPassingCorrectJsonWithoutCompression_noFileData() {
326 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
327 .name(PM_FILE_NAME) //
328 .location(LOCATION) //
329 .fileFormatType(FILE_FORMAT_TYPE) //
330 .fileFormatVersion(FILE_FORMAT_VERSION) //
332 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
333 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
334 .changeIdentifier(CHANGE_IDENTIFIER) //
335 .changeType(CHANGE_TYPE) //
336 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
337 .addAdditionalField(additionalField) //
340 String messageString = message.toString();
341 String parsedString = message.getParsed();
342 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
343 JsonElement jsonElement = new JsonParser().parse(parsedString);
344 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
345 .getJsonObjectFromAnArray(jsonElement);
347 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
348 .expectSubscription().expectNextCount(0).verifyComplete();
352 void whenPassingCorrectJsonWithoutFileFormatType_noFileData() {
353 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
354 .name(PM_FILE_NAME) //
355 .location(LOCATION) //
356 .compression(GZIP_COMPRESSION) //
357 .fileFormatVersion(FILE_FORMAT_VERSION) //
359 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
360 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
361 .changeIdentifier(CHANGE_IDENTIFIER) //
362 .changeType(CHANGE_TYPE) //
363 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
364 .addAdditionalField(additionalField) //
367 String messageString = message.toString();
368 String parsedString = message.getParsed();
369 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
370 JsonElement jsonElement = new JsonParser().parse(parsedString);
371 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
372 .getJsonObjectFromAnArray(jsonElement);
374 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
375 .expectSubscription().expectNextCount(0).verifyComplete();
379 void whenPassingOneCorrectJsonWithoutFileFormatVersionAndOneCorrect_oneFileData() {
380 AdditionalField additionalFaultyField = new JsonMessage.AdditionalFieldBuilder() //
381 .name(PM_FILE_NAME) //
382 .location(LOCATION) //
383 .compression(GZIP_COMPRESSION) //
384 .fileFormatType(FILE_FORMAT_TYPE) //
386 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
387 .name(PM_FILE_NAME) //
388 .location(LOCATION) //
389 .compression(GZIP_COMPRESSION) //
390 .fileFormatType(FILE_FORMAT_TYPE) //
391 .fileFormatVersion(FILE_FORMAT_VERSION) //
393 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
394 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
395 .changeIdentifier(CHANGE_IDENTIFIER) //
396 .changeType(CHANGE_TYPE) //
397 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
398 .addAdditionalField(additionalFaultyField) //
399 .addAdditionalField(additionalField) //
402 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
403 .productName(PRODUCT_NAME) //
404 .vendorName(VENDOR_NAME) //
405 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
406 .sourceName(SOURCE_NAME) //
407 .startEpochMicrosec(START_EPOCH_MICROSEC) //
408 .timeZoneOffset(TIME_ZONE_OFFSET) //
409 .changeIdentifier(CHANGE_IDENTIFIER) //
410 .changeType(CHANGE_TYPE) //
412 FileData expectedFileData = ImmutableFileData.builder() //
413 .name(PM_FILE_NAME) //
414 .location(LOCATION) //
415 .scheme(Scheme.FTPS) //
416 .compression(GZIP_COMPRESSION) //
417 .fileFormatType(FILE_FORMAT_TYPE) //
418 .fileFormatVersion(FILE_FORMAT_VERSION) //
419 .messageMetaData(messageMetaData) //
421 List<FileData> files = new ArrayList<>();
422 files.add(expectedFileData);
423 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
427 String messageString = message.toString();
428 String parsedString = message.getParsed();
429 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
430 JsonElement jsonElement = new JsonParser().parse(parsedString);
431 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
432 .getJsonObjectFromAnArray(jsonElement);
434 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
435 .expectSubscription().expectNext(expectedMessage).verifyComplete();
439 void whenPassingJsonWithoutMandatoryHeaderInformation_noFileData() {
440 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
441 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
442 .changeIdentifier("PM_MEAS_FILES_INVALID") //
443 .changeType("FileReady_INVALID") //
444 .notificationFieldsVersion("1.0_INVALID") //
447 String incorrectMessageString = message.toString();
448 String parsedString = message.getParsed();
449 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
450 JsonElement jsonElement = new JsonParser().parse(parsedString);
451 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
452 .getJsonObjectFromAnArray(jsonElement);
454 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(incorrectMessageString)))
455 .expectSubscription().expectComplete().verify();
459 void whenPassingJsonWithNullJsonElement_noFileData() {
460 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
461 JsonElement jsonElement = new JsonParser().parse("{}");
463 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
464 .getJsonObjectFromAnArray(jsonElement);
466 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just("[{}]"))).expectSubscription()
467 .expectComplete().verify();
471 void whenPassingCorrectJsonWithIncorrectChangeType_noFileData() {
472 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
473 .name(PM_FILE_NAME) //
474 .location(LOCATION) //
475 .compression(GZIP_COMPRESSION) //
476 .fileFormatVersion(FILE_FORMAT_VERSION) //
478 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
479 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
480 .changeIdentifier(CHANGE_IDENTIFIER) //
481 .changeType(INCORRECT_CHANGE_TYPE) //
482 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
483 .addAdditionalField(additionalField) //
486 String messageString = message.toString();
487 String parsedString = message.getParsed();
488 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
489 JsonElement jsonElement = new JsonParser().parse(parsedString);
490 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
491 .getJsonObjectFromAnArray(jsonElement);
493 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
494 .expectSubscription().expectNextCount(0).expectComplete().verify();
498 void whenPassingCorrectJsonWithIncorrectChangeIdentifier_noFileData() {
499 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
500 .name(PM_FILE_NAME) //
501 .location(LOCATION) //
502 .compression(GZIP_COMPRESSION) //
503 .fileFormatVersion(FILE_FORMAT_VERSION) //
505 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
506 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
507 .changeIdentifier(INCORRECT_CHANGE_IDENTIFIER) //
508 .changeType(CHANGE_TYPE) //
509 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
510 .addAdditionalField(additionalField) //
513 String messageString = message.toString();
514 String parsedString = message.getParsed();
515 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
516 JsonElement jsonElement = new JsonParser().parse(parsedString);
517 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
518 .getJsonObjectFromAnArray(jsonElement);
520 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
521 .expectSubscription().expectComplete().verify();