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.net.URISyntaxException;
27 import java.util.ArrayList;
28 import java.util.List;
29 import java.util.Optional;
31 import org.junit.jupiter.api.Test;
32 import org.mockito.Mockito;
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 * Tests the JsonMessageParser.
49 * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
50 * @author <a href="mailto:henrik.b.andersson@est.tech">Henrik Andersson</a>
52 class JsonMessageParserTest {
53 private static final String NR_RADIO_ERICSSON_EVENT_NAME = "Noti_NrRadio-Ericsson_FileReady";
54 private static final String PRODUCT_NAME = "NrRadio";
55 private static final String VENDOR_NAME = "Ericsson";
56 private static final String LAST_EPOCH_MICROSEC = "1519837825682";
57 private static final String SOURCE_NAME = "5GRAN_DU";
58 private static final String START_EPOCH_MICROSEC = "1519837825682";
59 private static final String TIME_ZONE_OFFSET = "UTC+05:00";
60 private static final String PM_FILE_NAME = "A20161224.1030-1045.bin.gz";
61 private static final String LOCATION = "ftpes://192.168.0.101:22/ftp/rop/" + PM_FILE_NAME;
62 private static final String GZIP_COMPRESSION = "gzip";
63 private static final String FILE_FORMAT_TYPE = "org.3GPP.32.435#measCollec";
64 private static final String FILE_FORMAT_VERSION = "V10";
65 private static final String CHANGE_IDENTIFIER = "PM_MEAS_FILES";
66 private static final String INCORRECT_CHANGE_IDENTIFIER = "INCORRECT_PM_MEAS_FILES";
67 private static final String CHANGE_TYPE = "FileReady";
68 private static final String INCORRECT_CHANGE_TYPE = "IncorrectFileReady";
69 private static final String NOTIFICATION_FIELDS_VERSION = "1.0";
72 void whenPassingCorrectJson_oneFileReadyMessage() throws URISyntaxException {
73 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
74 .name(PM_FILE_NAME) //
75 .location(LOCATION) //
76 .compression(GZIP_COMPRESSION) //
77 .fileFormatType(FILE_FORMAT_TYPE) //
78 .fileFormatVersion(FILE_FORMAT_VERSION) //
80 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
81 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
82 .changeIdentifier(CHANGE_IDENTIFIER) //
83 .changeType(CHANGE_TYPE) //
84 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
85 .addAdditionalField(additionalField) //
88 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
89 .productName(PRODUCT_NAME) //
90 .vendorName(VENDOR_NAME) //
91 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
92 .sourceName(SOURCE_NAME) //
93 .startEpochMicrosec(START_EPOCH_MICROSEC) //
94 .timeZoneOffset(TIME_ZONE_OFFSET) //
95 .changeIdentifier(CHANGE_IDENTIFIER) //
96 .changeType(CHANGE_TYPE) //
98 FileData expectedFileData = ImmutableFileData.builder() //
99 .name(PM_FILE_NAME) //
100 .location(LOCATION) //
101 .scheme(Scheme.FTPS) //
102 .compression(GZIP_COMPRESSION) //
103 .fileFormatType(FILE_FORMAT_TYPE) //
104 .fileFormatVersion(FILE_FORMAT_VERSION) //
105 .messageMetaData(messageMetaData) //
107 List<FileData> files = new ArrayList<>();
108 files.add(expectedFileData);
109 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
113 String messageString = message.toString();
114 String parsedString = message.getParsed();
115 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
116 JsonElement jsonElement = new JsonParser().parse(parsedString);
117 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
118 .getJsonObjectFromAnArray(jsonElement);
120 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
121 .expectSubscription().expectNext(expectedMessage).verifyComplete();
125 void whenPassingCorrectJsonWithTwoEvents_twoMessages() {
126 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
127 .name(PM_FILE_NAME) //
128 .location(LOCATION) //
129 .compression(GZIP_COMPRESSION) //
130 .fileFormatType(FILE_FORMAT_TYPE) //
131 .fileFormatVersion(FILE_FORMAT_VERSION) //
133 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
134 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
135 .changeIdentifier(CHANGE_IDENTIFIER) //
136 .changeType(CHANGE_TYPE) //
137 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
138 .addAdditionalField(additionalField) //
141 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
142 .productName(PRODUCT_NAME) //
143 .vendorName(VENDOR_NAME) //
144 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
145 .sourceName(SOURCE_NAME) //
146 .startEpochMicrosec(START_EPOCH_MICROSEC) //
147 .timeZoneOffset(TIME_ZONE_OFFSET) //
148 .changeIdentifier(CHANGE_IDENTIFIER) //
149 .changeType(CHANGE_TYPE) //
151 FileData expectedFileData = ImmutableFileData.builder() //
152 .name(PM_FILE_NAME) //
153 .location(LOCATION) //
154 .scheme(Scheme.FTPS) //
155 .compression(GZIP_COMPRESSION) //
156 .fileFormatType(FILE_FORMAT_TYPE) //
157 .fileFormatVersion(FILE_FORMAT_VERSION) //
158 .messageMetaData(messageMetaData) //
160 List<FileData> files = new ArrayList<>();
161 files.add(expectedFileData);
162 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
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() {
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) //
238 .messageMetaData(messageMetaData) //
240 List<FileData> files = new ArrayList<>();
241 files.add(expectedFileData);
242 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
246 String parsedString = message.getParsed();
247 String messageString = "[{\"event\":{}}," + parsedString + "]";
248 JsonMessageParser jsonMessageParserUnderTest = new JsonMessageParser();
250 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
251 .expectSubscription().expectNext(expectedMessage).verifyComplete();
255 void whenPassingCorrectJsonWithFaultyEventName_noFileData() {
256 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
257 .location(LOCATION) //
258 .compression(GZIP_COMPRESSION) //
259 .fileFormatType(FILE_FORMAT_TYPE) //
260 .fileFormatVersion(FILE_FORMAT_VERSION) //
262 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
263 .eventName("Faulty event name") //
264 .changeIdentifier(CHANGE_IDENTIFIER) //
265 .changeType(CHANGE_TYPE) //
266 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
267 .addAdditionalField(additionalField) //
270 String messageString = message.toString();
271 String parsedString = message.getParsed();
272 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
273 JsonElement jsonElement = new JsonParser().parse(parsedString);
274 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
275 .getJsonObjectFromAnArray(jsonElement);
277 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
278 .expectSubscription().expectComplete().verify();
282 void whenPassingCorrectJsonWithoutName_noFileData() {
283 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
284 .location(LOCATION) //
285 .compression(GZIP_COMPRESSION) //
286 .fileFormatType(FILE_FORMAT_TYPE) //
287 .fileFormatVersion(FILE_FORMAT_VERSION) //
289 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
290 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
291 .changeIdentifier(CHANGE_IDENTIFIER) //
292 .changeType(CHANGE_TYPE) //
293 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
294 .addAdditionalField(additionalField) //
297 String messageString = message.toString();
298 String parsedString = message.getParsed();
299 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
300 JsonElement jsonElement = new JsonParser().parse(parsedString);
301 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
302 .getJsonObjectFromAnArray(jsonElement);
304 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
305 .expectSubscription().expectNextCount(0).verifyComplete();
309 void whenPassingCorrectJsonWithoutAdditionalFields_noFileData() {
310 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
311 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
312 .changeIdentifier(CHANGE_IDENTIFIER) //
313 .changeType(CHANGE_TYPE) //
314 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
317 String messageString = message.toString();
318 String parsedString = message.getParsed();
319 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
320 JsonElement jsonElement = new JsonParser().parse(parsedString);
321 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
322 .getJsonObjectFromAnArray(jsonElement);
324 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
325 .expectSubscription().expectNextCount(0).verifyComplete();
329 void whenPassingCorrectJsonWithoutCompression_noFileData() {
330 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
331 .name(PM_FILE_NAME) //
332 .location(LOCATION) //
333 .fileFormatType(FILE_FORMAT_TYPE) //
334 .fileFormatVersion(FILE_FORMAT_VERSION) //
336 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
337 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
338 .changeIdentifier(CHANGE_IDENTIFIER) //
339 .changeType(CHANGE_TYPE) //
340 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
341 .addAdditionalField(additionalField) //
344 String messageString = message.toString();
345 String parsedString = message.getParsed();
346 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
347 JsonElement jsonElement = new JsonParser().parse(parsedString);
348 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
349 .getJsonObjectFromAnArray(jsonElement);
351 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
352 .expectSubscription().expectNextCount(0).verifyComplete();
356 void whenPassingCorrectJsonWithoutFileFormatType_noFileData() {
357 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
358 .name(PM_FILE_NAME) //
359 .location(LOCATION) //
360 .compression(GZIP_COMPRESSION) //
361 .fileFormatVersion(FILE_FORMAT_VERSION) //
363 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
364 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
365 .changeIdentifier(CHANGE_IDENTIFIER) //
366 .changeType(CHANGE_TYPE) //
367 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
368 .addAdditionalField(additionalField) //
371 String messageString = message.toString();
372 String parsedString = message.getParsed();
373 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
374 JsonElement jsonElement = new JsonParser().parse(parsedString);
375 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
376 .getJsonObjectFromAnArray(jsonElement);
378 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
379 .expectSubscription().expectNextCount(0).verifyComplete();
383 void whenPassingOneCorrectJsonWithoutFileFormatVersionAndOneCorrect_oneFileData() {
384 AdditionalField additionalFaultyField = new JsonMessage.AdditionalFieldBuilder() //
385 .name(PM_FILE_NAME) //
386 .location(LOCATION) //
387 .compression(GZIP_COMPRESSION) //
388 .fileFormatType(FILE_FORMAT_TYPE) //
390 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
391 .name(PM_FILE_NAME) //
392 .location(LOCATION) //
393 .compression(GZIP_COMPRESSION) //
394 .fileFormatType(FILE_FORMAT_TYPE) //
395 .fileFormatVersion(FILE_FORMAT_VERSION) //
397 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
398 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
399 .changeIdentifier(CHANGE_IDENTIFIER) //
400 .changeType(CHANGE_TYPE) //
401 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
402 .addAdditionalField(additionalFaultyField) //
403 .addAdditionalField(additionalField) //
406 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
407 .productName(PRODUCT_NAME) //
408 .vendorName(VENDOR_NAME) //
409 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
410 .sourceName(SOURCE_NAME) //
411 .startEpochMicrosec(START_EPOCH_MICROSEC) //
412 .timeZoneOffset(TIME_ZONE_OFFSET) //
413 .changeIdentifier(CHANGE_IDENTIFIER) //
414 .changeType(CHANGE_TYPE) //
416 FileData expectedFileData = ImmutableFileData.builder() //
417 .name(PM_FILE_NAME) //
418 .location(LOCATION) //
419 .scheme(Scheme.FTPS) //
420 .compression(GZIP_COMPRESSION) //
421 .fileFormatType(FILE_FORMAT_TYPE) //
422 .fileFormatVersion(FILE_FORMAT_VERSION) //
423 .messageMetaData(messageMetaData) //
425 List<FileData> files = new ArrayList<>();
426 files.add(expectedFileData);
427 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
431 String messageString = message.toString();
432 String parsedString = message.getParsed();
433 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
434 JsonElement jsonElement = new JsonParser().parse(parsedString);
435 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
436 .getJsonObjectFromAnArray(jsonElement);
438 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
439 .expectSubscription().expectNext(expectedMessage).verifyComplete();
443 void whenPassingJsonWithoutMandatoryHeaderInformation_noFileData() {
444 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
445 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
446 .changeIdentifier("PM_MEAS_FILES_INVALID") //
447 .changeType("FileReady_INVALID") //
448 .notificationFieldsVersion("1.0_INVALID") //
451 String incorrectMessageString = message.toString();
452 String parsedString = message.getParsed();
453 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
454 JsonElement jsonElement = new JsonParser().parse(parsedString);
455 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
456 .getJsonObjectFromAnArray(jsonElement);
458 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(incorrectMessageString)))
459 .expectSubscription().expectComplete().verify();
463 void whenPassingJsonWithNullJsonElement_noFileData() {
464 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
465 JsonElement jsonElement = new JsonParser().parse("{}");
467 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
468 .getJsonObjectFromAnArray(jsonElement);
470 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just("[{}]"))).expectSubscription()
471 .expectComplete().verify();
475 void whenPassingCorrectJsonWithIncorrectChangeType_noFileData() {
476 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
477 .name(PM_FILE_NAME) //
478 .location(LOCATION) //
479 .compression(GZIP_COMPRESSION) //
480 .fileFormatVersion(FILE_FORMAT_VERSION) //
482 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
483 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
484 .changeIdentifier(CHANGE_IDENTIFIER) //
485 .changeType(INCORRECT_CHANGE_TYPE) //
486 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
487 .addAdditionalField(additionalField) //
490 String messageString = message.toString();
491 String parsedString = message.getParsed();
492 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
493 JsonElement jsonElement = new JsonParser().parse(parsedString);
494 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
495 .getJsonObjectFromAnArray(jsonElement);
497 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
498 .expectSubscription().expectNextCount(0).expectComplete().verify();
502 void whenPassingCorrectJsonWithIncorrectChangeIdentifier_noFileData() {
503 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
504 .name(PM_FILE_NAME) //
505 .location(LOCATION) //
506 .compression(GZIP_COMPRESSION) //
507 .fileFormatVersion(FILE_FORMAT_VERSION) //
509 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
510 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
511 .changeIdentifier(INCORRECT_CHANGE_IDENTIFIER) //
512 .changeType(CHANGE_TYPE) //
513 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
514 .addAdditionalField(additionalField) //
517 String messageString = message.toString();
518 String parsedString = message.getParsed();
519 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
520 JsonElement jsonElement = new JsonParser().parse(parsedString);
521 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
522 .getJsonObjectFromAnArray(jsonElement);
524 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
525 .expectSubscription().expectComplete().verify();