diff options
Diffstat (limited to 'datafile-app-server/src/test/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParserTest.java')
-rw-r--r-- | datafile-app-server/src/test/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParserTest.java | 128 |
1 files changed, 95 insertions, 33 deletions
diff --git a/datafile-app-server/src/test/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParserTest.java b/datafile-app-server/src/test/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParserTest.java index 8c7938bf..b7eddaa7 100644 --- a/datafile-app-server/src/test/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParserTest.java +++ b/datafile-app-server/src/test/java/org/onap/dcaegen2/collectors/datafile/service/JsonMessageParserTest.java @@ -18,16 +18,17 @@ package org.onap.dcaegen2.collectors.datafile.service; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.spy; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.read.ListAppender; import com.google.gson.JsonElement; import com.google.gson.JsonParser; - import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import java.util.Optional; - import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.onap.dcaegen2.collectors.datafile.ftp.Scheme; @@ -39,7 +40,7 @@ import org.onap.dcaegen2.collectors.datafile.model.ImmutableMessageMetaData; import org.onap.dcaegen2.collectors.datafile.model.MessageMetaData; import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage; import org.onap.dcaegen2.collectors.datafile.utils.JsonMessage.AdditionalField; - +import org.onap.dcaegen2.collectors.datafile.utils.LoggingUtils; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -50,6 +51,8 @@ import reactor.test.StepVerifier; * @author <a href="mailto:henrik.b.andersson@est.tech">Henrik Andersson</a> */ class JsonMessageParserTest { + private static final String ERROR_LOG_TAG = "[ERROR] "; + private static final String NR_RADIO_ERICSSON_EVENT_NAME = "Noti_NrRadio-Ericsson_FileReady"; private static final String PRODUCT_NAME = "NrRadio"; private static final String VENDOR_NAME = "Ericsson"; @@ -63,7 +66,6 @@ class JsonMessageParserTest { private static final String FILE_FORMAT_TYPE = "org.3GPP.32.435#measCollec"; private static final String FILE_FORMAT_VERSION = "V10"; private static final String CHANGE_IDENTIFIER = "PM_MEAS_FILES"; - private static final String INCORRECT_CHANGE_IDENTIFIER = "INCORRECT_PM_MEAS_FILES"; private static final String CHANGE_TYPE = "FileReady"; private static final String INCORRECT_CHANGE_TYPE = "IncorrectFileReady"; private static final String NOTIFICATION_FIELDS_VERSION = "1.0"; @@ -197,8 +199,49 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); + StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) + .expectSubscription().expectNextCount(0).verifyComplete(); + + assertTrue(logAppender.list.toString() + .contains("[ERROR] VES event parsing. File information wrong. " + "Missing location.")); + assertTrue(logAppender.list.get(0).toString().contains("sourceName=5GRAN_DU")); + } + + @Test + void whenPassingCorrectJsonWrongScheme_noMessage() { + AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() // + .name(PM_FILE_NAME) // + .location("http://location.xml") // + .compression(GZIP_COMPRESSION) // + .fileFormatType(FILE_FORMAT_TYPE) // + .fileFormatVersion(FILE_FORMAT_VERSION) // + .build(); + JsonMessage message = new JsonMessage.JsonMessageBuilder() // + .eventName(NR_RADIO_ERICSSON_EVENT_NAME) // + .changeIdentifier(CHANGE_IDENTIFIER) // + .changeType(CHANGE_TYPE) // + .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) // + .addAdditionalField(additionalField) // + .build(); + + String messageString = message.toString(); + String parsedString = message.getParsed(); + JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser()); + JsonElement jsonElement = new JsonParser().parse(parsedString); + Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) + .getJsonObjectFromAnArray(jsonElement); + + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) .expectSubscription().expectNextCount(0).verifyComplete(); + + assertTrue("Error missing in log", + logAppender.list.toString() + .contains(ERROR_LOG_TAG + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + Scheme.DFC_DOES_NOT_SUPPORT_PROTOCOL_ERROR_MSG + "http" + + Scheme.SUPPORTED_PROTOCOLS_ERROR_MESSAGE + ". Location: http://location.xml")); + assertTrue("Missing sourceName in log", logAppender.list.toString().contains("sourceName=5GRAN_DU")); } @Test @@ -274,8 +317,13 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) .expectSubscription().expectComplete().verify(); + + assertTrue("Error missing in log", logAppender.list.toString().contains(ERROR_LOG_TAG + + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + "Can not get PRODUCT_NAME from eventName, eventName is not in correct format: Faulty event name")); } @Test @@ -301,8 +349,15 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) .expectSubscription().expectNextCount(0).verifyComplete(); + + assertTrue("Error missing in log", + logAppender.list.toString() + .contains(ERROR_LOG_TAG + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + "File information wrong. Missing data: [name] Data: " + + message.getAdditionalFields().get(0).toString())); } @Test @@ -321,8 +376,13 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) .expectSubscription().expectNextCount(0).verifyComplete(); + + assertTrue("Error missing in log", + logAppender.list.toString().contains(ERROR_LOG_TAG + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + "Missing arrayOfNamedHashMap in message. " + message.getParsed())); } @Test @@ -348,8 +408,15 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) .expectSubscription().expectNextCount(0).verifyComplete(); + + assertTrue("Error missing in log", + logAppender.list.toString() + .contains(ERROR_LOG_TAG + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + "File information wrong. Missing data: [compression] Data: " + + message.getAdditionalFields().get(0).toString())); } @Test @@ -375,8 +442,15 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) .expectSubscription().expectNextCount(0).verifyComplete(); + + assertTrue("Error missing in log", + logAppender.list.toString() + .contains(ERROR_LOG_TAG + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + "File information wrong. Missing data: [fileFormatType] Data: " + + message.getAdditionalFields().get(0).toString())); } @Test @@ -443,9 +517,6 @@ class JsonMessageParserTest { void whenPassingJsonWithoutMandatoryHeaderInformation_noFileData() { JsonMessage message = new JsonMessage.JsonMessageBuilder() // .eventName(NR_RADIO_ERICSSON_EVENT_NAME) // - .changeIdentifier("PM_MEAS_FILES_INVALID") // - .changeType("FileReady_INVALID") // - .notificationFieldsVersion("1.0_INVALID") // .build(); String incorrectMessageString = message.toString(); @@ -455,8 +526,15 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(incorrectMessageString))) .expectSubscription().expectComplete().verify(); + + assertTrue("Error missing in log", + logAppender.list.toString() + .contains(ERROR_LOG_TAG + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + "Missing data: [changeIdentifier, changeType, notificationFieldsVersion]. " + + "Change type is wrong: Expected: FileReady Message: " + message.getParsed())); } @Test @@ -467,8 +545,12 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just("[{}]"))).expectSubscription() .expectComplete().verify(); + + assertTrue("Error missing in log", + logAppender.list.toString().contains(ERROR_LOG_TAG + "Incorrect JsonObject - missing header. ")); } @Test @@ -494,34 +576,14 @@ class JsonMessageParserTest { Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) .getJsonObjectFromAnArray(jsonElement); + ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(JsonMessageParser.class); StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) .expectSubscription().expectNextCount(0).expectComplete().verify(); - } - @Test - void whenPassingCorrectJsonWithIncorrectChangeIdentifier_noFileData() { - AdditionalField additionalField = new JsonMessage.AdditionalFieldBuilder() // - .name(PM_FILE_NAME) // - .location(LOCATION) // - .compression(GZIP_COMPRESSION) // - .fileFormatVersion(FILE_FORMAT_VERSION) // - .build(); - JsonMessage message = new JsonMessage.JsonMessageBuilder() // - .eventName(NR_RADIO_ERICSSON_EVENT_NAME) // - .changeIdentifier(INCORRECT_CHANGE_IDENTIFIER) // - .changeType(CHANGE_TYPE) // - .notificationFieldsVersion(NOTIFICATION_FIELDS_VERSION) // - .addAdditionalField(additionalField) // - .build(); - - String messageString = message.toString(); - String parsedString = message.getParsed(); - JsonMessageParser jsonMessageParserUnderTest = spy(new JsonMessageParser()); - JsonElement jsonElement = new JsonParser().parse(parsedString); - Mockito.doReturn(Optional.of(jsonElement.getAsJsonObject())).when(jsonMessageParserUnderTest) - .getJsonObjectFromAnArray(jsonElement); - - StepVerifier.create(jsonMessageParserUnderTest.getMessagesFromJson(Mono.just(messageString))) - .expectSubscription().expectComplete().verify(); + assertTrue("Error missing in log", + logAppender.list.toString() + .contains(ERROR_LOG_TAG + JsonMessageParser.ERROR_MSG_VES_EVENT_PARSING + + " Change type is wrong: " + INCORRECT_CHANGE_TYPE + " Expected: FileReady Message: " + + message.getParsed())); } } |