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.ftp.Scheme;
33 import org.onap.dcaegen2.collectors.datafile.model.FileData;
34 import org.onap.dcaegen2.collectors.datafile.model.FileReadyMessage;
35 import org.onap.dcaegen2.collectors.datafile.model.ImmutableFileData;
36 import org.onap.dcaegen2.collectors.datafile.model.ImmutableFileReadyMessage;
37 import org.onap.dcaegen2.collectors.datafile.model.ImmutableMessageMetaData;
38 import org.onap.dcaegen2.collectors.datafile.model.MessageMetaData;
39 import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage;
40 import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage.AdditionalField;
42 import reactor.core.publisher.Mono;
43 import reactor.test.StepVerifier;
46 * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
47 * @author <a href="mailto:henrik.b.andersson@est.tech">Henrik Andersson</a>
49 class JsonMessageParserTest {
50 private static final String NR_RADIO_ERICSSON_EVENT_NAME = "Noti_NrRadio-Ericsson_FileReady";
51 private static final String PRODUCT_NAME = "NrRadio";
52 private static final String VENDOR_NAME = "Ericsson";
53 private static final String LAST_EPOCH_MICROSEC = "1519837825682";
54 private static final String SOURCE_NAME = "5GRAN_DU";
55 private static final String START_EPOCH_MICROSEC = "1519837825682";
56 private static final String TIME_ZONE_OFFSET = "UTC+05:00";
57 private static final String PM_FILE_NAME = "A20161224.1030-1045.bin.gz";
58 private static final String LOCATION = "ftpes://192.168.0.101:22/ftp/rop/" + PM_FILE_NAME;
59 private static final String GZIP_COMPRESSION = "gzip";
60 private static final String FILE_FORMAT_TYPE = "org.3GPP.32.435#measCollec";
61 private static final String FILE_FORMAT_VERSION = "V10";
62 private static final String CHANGE_IDENTIFIER = "PM_MEAS_FILES";
63 private static final String INCORRECT_CHANGE_IDENTIFIER = "INCORRECT_PM_MEAS_FILES";
64 private static final String CHANGE_TYPE = "FileReady";
65 private static final String INCORRECT_CHANGE_TYPE = "IncorrectFileReady";
66 private static final String NOTIFICATION_FIELDS_VERSION = "1.0";
69 void whenPassingCorrectJson_oneFileReadyMessage() {
70 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
71 .name(PM_FILE_NAME) //
72 .location(LOCATION) //
73 .compression(GZIP_COMPRESSION) //
74 .fileFormatType(FILE_FORMAT_TYPE) //
75 .fileFormatVersion(FILE_FORMAT_VERSION) //
77 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
78 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
79 .changeIdentifier(CHANGE_IDENTIFIER) //
80 .changeType(CHANGE_TYPE) //
81 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
82 .addAdditionalField(additionalField) //
85 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
86 .productName(PRODUCT_NAME) //
87 .vendorName(VENDOR_NAME) //
88 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
89 .sourceName(SOURCE_NAME) //
90 .startEpochMicrosec(START_EPOCH_MICROSEC) //
91 .timeZoneOffset(TIME_ZONE_OFFSET) //
92 .changeIdentifier(CHANGE_IDENTIFIER) //
93 .changeType(CHANGE_TYPE) //
95 FileData expectedFileData = ImmutableFileData.builder() //
96 .name(PM_FILE_NAME) //
97 .location(LOCATION) //
98 .scheme(Scheme.FTPS) //
99 .compression(GZIP_COMPRESSION) //
100 .fileFormatType(FILE_FORMAT_TYPE) //
101 .fileFormatVersion(FILE_FORMAT_VERSION) //
102 .messageMetaData(messageMetaData)
104 List<FileData> files = new ArrayList<>();
105 files.add(expectedFileData);
106 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder()
110 String messageString = message.toString();
111 String parsedString = message.getParsed();
112 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
113 JsonElement jsonElement = new JsonParser().parse(parsedString);
114 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
115 .getJsonObjectFromAnArray(jsonElement);
117 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
118 .expectSubscription().expectNext(expectedMessage).verifyComplete();
122 void whenPassingCorrectJsonWithTwoEvents_twoMessages() {
123 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
124 .name(PM_FILE_NAME) //
125 .location(LOCATION) //
126 .compression(GZIP_COMPRESSION) //
127 .fileFormatType(FILE_FORMAT_TYPE) //
128 .fileFormatVersion(FILE_FORMAT_VERSION) //
130 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
131 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
132 .changeIdentifier(CHANGE_IDENTIFIER) //
133 .changeType(CHANGE_TYPE) //
134 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
135 .addAdditionalField(additionalField) //
138 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
139 .productName(PRODUCT_NAME) //
140 .vendorName(VENDOR_NAME) //
141 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
142 .sourceName(SOURCE_NAME) //
143 .startEpochMicrosec(START_EPOCH_MICROSEC) //
144 .timeZoneOffset(TIME_ZONE_OFFSET) //
145 .changeIdentifier(CHANGE_IDENTIFIER) //
146 .changeType(CHANGE_TYPE) //
148 FileData expectedFileData = ImmutableFileData.builder() //
149 .name(PM_FILE_NAME) //
150 .location(LOCATION) //
151 .scheme(Scheme.FTPS) //
152 .compression(GZIP_COMPRESSION) //
153 .fileFormatType(FILE_FORMAT_TYPE) //
154 .fileFormatVersion(FILE_FORMAT_VERSION) //
155 .messageMetaData(messageMetaData)
157 List<FileData> files = new ArrayList<>();
158 files.add(expectedFileData);
159 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
163 String parsedString = message.getParsed();
164 String messageString = "[" + parsedString + "," + parsedString + "]";
165 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
166 JsonElement jsonElement = new JsonParser().parse(parsedString);
167 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
168 .getJsonObjectFromAnArray(jsonElement);
170 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
171 .expectSubscription().expectNext(expectedMessage).expectNext(expectedMessage).verifyComplete();
175 void whenPassingCorrectJsonWithoutLocation_noMessage() {
176 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
177 .name(PM_FILE_NAME) //
178 .compression(GZIP_COMPRESSION) //
179 .fileFormatType(FILE_FORMAT_TYPE) //
180 .fileFormatVersion(FILE_FORMAT_VERSION) //
182 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
183 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
184 .changeIdentifier(CHANGE_IDENTIFIER) //
185 .changeType(CHANGE_TYPE) //
186 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
187 .addAdditionalField(additionalField) //
190 String messageString = message.toString();
191 String parsedString = message.getParsed();
192 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
193 JsonElement jsonElement = new JsonParser().parse(parsedString);
194 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
195 .getJsonObjectFromAnArray(jsonElement);
197 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
198 .expectSubscription().expectNextCount(0).verifyComplete();
202 void whenPassingCorrectJsonWithTwoEventsFirstNoHeader_oneFileDatan() {
203 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
204 .name(PM_FILE_NAME) //
205 .location(LOCATION) //
206 .compression(GZIP_COMPRESSION) //
207 .fileFormatType(FILE_FORMAT_TYPE) //
208 .fileFormatVersion(FILE_FORMAT_VERSION) //
210 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
211 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
212 .changeIdentifier(CHANGE_IDENTIFIER) //
213 .changeType(CHANGE_TYPE) //
214 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
215 .addAdditionalField(additionalField) //
218 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
219 .productName(PRODUCT_NAME) //
220 .vendorName(VENDOR_NAME) //
221 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
222 .sourceName(SOURCE_NAME) //
223 .startEpochMicrosec(START_EPOCH_MICROSEC) //
224 .timeZoneOffset(TIME_ZONE_OFFSET) //
225 .changeIdentifier(CHANGE_IDENTIFIER) //
226 .changeType(CHANGE_TYPE) //
228 FileData expectedFileData = ImmutableFileData.builder() //
229 .name(PM_FILE_NAME) //
230 .location(LOCATION) //
231 .scheme(Scheme.FTPS) //
232 .compression(GZIP_COMPRESSION) //
233 .fileFormatType(FILE_FORMAT_TYPE) //
234 .fileFormatVersion(FILE_FORMAT_VERSION) //
235 .messageMetaData(messageMetaData)
237 List<FileData> files = new ArrayList<>();
238 files.add(expectedFileData);
239 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
243 String parsedString = message.getParsed();
244 String messageString = "[{\"event\":{}}," + parsedString + "]";
245 JsonMessageParser jsonMessageParserUnderTest = new JsonMessageParser();
247 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
248 .expectSubscription().expectNext(expectedMessage).verifyComplete();
252 void whenPassingCorrectJsonWithFaultyEventName_noFileData() {
253 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
254 .location(LOCATION) //
255 .compression(GZIP_COMPRESSION) //
256 .fileFormatType(FILE_FORMAT_TYPE) //
257 .fileFormatVersion(FILE_FORMAT_VERSION) //
259 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
260 .eventName("Faulty event name") //
261 .changeIdentifier(CHANGE_IDENTIFIER) //
262 .changeType(CHANGE_TYPE) //
263 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
264 .addAdditionalField(additionalField) //
267 String messageString = message.toString();
268 String parsedString = message.getParsed();
269 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
270 JsonElement jsonElement = new JsonParser().parse(parsedString);
271 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
272 .getJsonObjectFromAnArray(jsonElement);
274 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
275 .expectSubscription().expectComplete().verify();
279 void whenPassingCorrectJsonWithoutName_noFileData() {
280 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
281 .location(LOCATION) //
282 .compression(GZIP_COMPRESSION) //
283 .fileFormatType(FILE_FORMAT_TYPE) //
284 .fileFormatVersion(FILE_FORMAT_VERSION) //
286 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
287 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
288 .changeIdentifier(CHANGE_IDENTIFIER) //
289 .changeType(CHANGE_TYPE) //
290 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
291 .addAdditionalField(additionalField) //
294 String messageString = message.toString();
295 String parsedString = message.getParsed();
296 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
297 JsonElement jsonElement = new JsonParser().parse(parsedString);
298 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
299 .getJsonObjectFromAnArray(jsonElement);
301 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
302 .expectSubscription().expectNextCount(0).verifyComplete();
306 void whenPassingCorrectJsonWithoutAdditionalFields_noFileData() {
307 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
308 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
309 .changeIdentifier(CHANGE_IDENTIFIER) //
310 .changeType(CHANGE_TYPE) //
311 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
314 String messageString = message.toString();
315 String parsedString = message.getParsed();
316 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
317 JsonElement jsonElement = new JsonParser().parse(parsedString);
318 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
319 .getJsonObjectFromAnArray(jsonElement);
321 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
322 .expectSubscription().expectNextCount(0).verifyComplete();
326 void whenPassingCorrectJsonWithoutCompression_noFileData() {
327 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
328 .name(PM_FILE_NAME) //
329 .location(LOCATION) //
330 .fileFormatType(FILE_FORMAT_TYPE) //
331 .fileFormatVersion(FILE_FORMAT_VERSION) //
333 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
334 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
335 .changeIdentifier(CHANGE_IDENTIFIER) //
336 .changeType(CHANGE_TYPE) //
337 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
338 .addAdditionalField(additionalField) //
341 String messageString = message.toString();
342 String parsedString = message.getParsed();
343 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
344 JsonElement jsonElement = new JsonParser().parse(parsedString);
345 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
346 .getJsonObjectFromAnArray(jsonElement);
348 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
349 .expectSubscription().expectNextCount(0).verifyComplete();
353 void whenPassingCorrectJsonWithoutFileFormatType_noFileData() {
354 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
355 .name(PM_FILE_NAME) //
356 .location(LOCATION) //
357 .compression(GZIP_COMPRESSION) //
358 .fileFormatVersion(FILE_FORMAT_VERSION) //
360 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
361 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
362 .changeIdentifier(CHANGE_IDENTIFIER) //
363 .changeType(CHANGE_TYPE) //
364 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
365 .addAdditionalField(additionalField) //
368 String messageString = message.toString();
369 String parsedString = message.getParsed();
370 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
371 JsonElement jsonElement = new JsonParser().parse(parsedString);
372 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
373 .getJsonObjectFromAnArray(jsonElement);
375 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
376 .expectSubscription().expectNextCount(0).verifyComplete();
380 void whenPassingOneCorrectJsonWithoutFileFormatVersionAndOneCorrect_oneFileData() {
381 AdditionalField additionalFaultyField = new JsonMessage.AdditionalFieldBuilder() //
382 .name(PM_FILE_NAME) //
383 .location(LOCATION) //
384 .compression(GZIP_COMPRESSION) //
385 .fileFormatType(FILE_FORMAT_TYPE) //
387 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
388 .name(PM_FILE_NAME) //
389 .location(LOCATION) //
390 .compression(GZIP_COMPRESSION) //
391 .fileFormatType(FILE_FORMAT_TYPE) //
392 .fileFormatVersion(FILE_FORMAT_VERSION) //
394 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
395 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
396 .changeIdentifier(CHANGE_IDENTIFIER) //
397 .changeType(CHANGE_TYPE) //
398 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
399 .addAdditionalField(additionalFaultyField) //
400 .addAdditionalField(additionalField) //
403 MessageMetaData messageMetaData = ImmutableMessageMetaData.builder() //
404 .productName(PRODUCT_NAME) //
405 .vendorName(VENDOR_NAME) //
406 .lastEpochMicrosec(LAST_EPOCH_MICROSEC) //
407 .sourceName(SOURCE_NAME) //
408 .startEpochMicrosec(START_EPOCH_MICROSEC) //
409 .timeZoneOffset(TIME_ZONE_OFFSET) //
410 .changeIdentifier(CHANGE_IDENTIFIER) //
411 .changeType(CHANGE_TYPE) //
413 FileData expectedFileData = ImmutableFileData.builder() //
414 .name(PM_FILE_NAME) //
415 .location(LOCATION) //
416 .scheme(Scheme.FTPS) //
417 .compression(GZIP_COMPRESSION) //
418 .fileFormatType(FILE_FORMAT_TYPE) //
419 .fileFormatVersion(FILE_FORMAT_VERSION) //
420 .messageMetaData(messageMetaData)
422 List<FileData> files = new ArrayList<>();
423 files.add(expectedFileData);
424 FileReadyMessage expectedMessage = ImmutableFileReadyMessage.builder() //
428 String messageString = message.toString();
429 String parsedString = message.getParsed();
430 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
431 JsonElement jsonElement = new JsonParser().parse(parsedString);
432 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
433 .getJsonObjectFromAnArray(jsonElement);
435 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
436 .expectSubscription().expectNext(expectedMessage).verifyComplete();
440 void whenPassingJsonWithoutMandatoryHeaderInformation_noFileData() {
441 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
442 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
443 .changeIdentifier("PM_MEAS_FILES_INVALID") //
444 .changeType("FileReady_INVALID") //
445 .notificationFieldsVersion("1.0_INVALID") //
448 String incorrectMessageString = message.toString();
449 String parsedString = message.getParsed();
450 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
451 JsonElement jsonElement = new JsonParser().parse(parsedString);
452 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
453 .getJsonObjectFromAnArray(jsonElement);
455 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(incorrectMessageString)))
456 .expectSubscription().expectComplete().verify();
460 void whenPassingJsonWithNullJsonElement_noFileData() {
461 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
462 JsonElement jsonElement = new JsonParser().parse("{}");
464 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
465 .getJsonObjectFromAnArray(jsonElement);
467 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just("[{}]"))).expectSubscription()
468 .expectComplete().verify();
472 void whenPassingCorrectJsonWithIncorrectChangeType_noFileData() {
473 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
474 .name(PM_FILE_NAME) //
475 .location(LOCATION) //
476 .compression(GZIP_COMPRESSION)
477 .fileFormatVersion(FILE_FORMAT_VERSION) //
479 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
480 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
481 .changeIdentifier(CHANGE_IDENTIFIER) //
482 .changeType(INCORRECT_CHANGE_TYPE) //
483 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
484 .addAdditionalField(additionalField) //
487 String messageString = message.toString();
488 String parsedString = message.getParsed();
489 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
490 JsonElement jsonElement = new JsonParser().parse(parsedString);
491 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
492 .getJsonObjectFromAnArray(jsonElement);
494 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
495 .expectSubscription().expectNextCount(0).expectComplete().verify();
499 void whenPassingCorrectJsonWithIncorrectChangeIdentifier_noFileData() {
500 AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() //
501 .name(PM_FILE_NAME) //
502 .location(LOCATION) //
503 .compression(GZIP_COMPRESSION) //
504 .fileFormatVersion(FILE_FORMAT_VERSION) //
506 JsonMessage message = new JsonMessage.JsonMessageBuilder() //
507 .eventName(NR_RADIO_ERICSSON_EVENT_NAME) //
508 .changeIdentifier(INCORRECT_CHANGE_IDENTIFIER) //
509 .changeType(CHANGE_TYPE) //
510 .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) //
511 .addAdditionalField(additionalField) //
514 String messageString = message.toString();
515 String parsedString = message.getParsed();
516 JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser());
517 JsonElement jsonElement = new JsonParser().parse(parsedString);
518 Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest)
519 .getJsonObjectFromAnArray(jsonElement);
521 StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString)))
522 .expectSubscription().expectComplete().verify();