Converter unit tests 27/36027/2
authorJakub Dudycz <jakub.dudycz@nokia.com>
Thu, 15 Mar 2018 14:49:36 +0000 (15:49 +0100)
committerTakamune Cho <tc012c@att.com>
Thu, 15 Mar 2018 16:13:35 +0000 (16:13 +0000)
Improved code coverage.

Change-Id: Ieff8e92f907a9c45e4c810754d6e3d86e2c5bd0c
Issue-ID: APPC-745
Signed-off-by: Jakub Dudycz <jakub.dudycz@nokia.com>
appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/LCM/conv/Converter.java
appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/LCM/impl/WorkerImpl.java
appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/LCM/TestConverter.java [deleted file]
appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/LCM/conv/ConverterTest.java [new file with mode: 0644]

index 4cef18c..6e303a5 100644 (file)
@@ -26,17 +26,30 @@ package org.onap.appc.listener.LCM.conv;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import org.apache.commons.lang3.StringUtils;
 import org.json.JSONObject;
 import org.onap.appc.listener.LCM.model.DmaapMessage;
 import org.onap.appc.listener.LCM.model.DmaapOutgoingMessage;
 import org.onap.appc.listener.util.Mapper;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 public class Converter {
-   
-    public static DmaapOutgoingMessage convJsonNodeToDmaapOutgoingMessage(DmaapMessage event, JsonNode inObj) {
-       DmaapOutgoingMessage outObj = new DmaapOutgoingMessage();
+
+    private Converter() {
+    }
+
+    public static DmaapOutgoingMessage convertJsonNodeToDmaapOutgoingMessage(DmaapMessage event, JsonNode inObj){
+
+        if (event == null || inObj == null) {
+            throw new IllegalArgumentException("One of given arguments is null");
+        }
+
+        DmaapOutgoingMessage outObj = new DmaapOutgoingMessage();
         outObj.setBody(inObj);
         outObj.setRpcName(event.getRpcName());
         outObj.setVersion(event.getVersion());
@@ -45,58 +58,80 @@ public class Converter {
         return outObj;
     }
 
-    public static String convDmaapOutgoingMessageToJsonString(DmaapMessage inObj) throws JsonProcessingException {
-//        return Mapper.toJsonString(inObj);
+    public static String convertDmaapOutgoingMessageToJsonString(DmaapMessage inObj) throws JsonProcessingException {
+
+        if (inObj == null)
+            throw new IllegalArgumentException("Input message is null");
+
+
         ObjectMapper objectMapper = new ObjectMapper();
-        ObjectWriter writer = objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL).configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY,true)
-                .writer().withFeatures(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
+        ObjectWriter writer = objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)
+            .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
+            .writer().withFeatures(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
         return writer.writeValueAsString(inObj);
 
     }
 
-    public static DmaapOutgoingMessage buildDmaapOutgoingMessageWithUnexpectedError(DmaapMessage event,Exception inputException) {
-       DmaapOutgoingMessage dmaapOutgoingMessage = null;
-        String errMsg = StringUtils.isEmpty(inputException.getMessage())? inputException.toString() : inputException.getMessage();
+    public static DmaapOutgoingMessage buildDmaapOutgoingMessageWithUnexpectedError(DmaapMessage event,
+        Exception inputException) {
+
+        if (event == null || inputException == null) {
+            throw new IllegalArgumentException("One of given arguments is null");
+        }
+
+        DmaapOutgoingMessage dmaapOutgoingMessage;
+        String errMsg =
+            StringUtils.isEmpty(inputException.getMessage()) ? inputException.toString() : inputException.getMessage();
         JSONObject commonHeaderJsonObject = Mapper.toJsonObject(event.getBody().get("input").get("common-header"));
-        JSONObject jsonObjectOutput = new JSONObject().accumulate("common-header", commonHeaderJsonObject).accumulate("status", new JSONObject().accumulate("code",200).accumulate("value",errMsg));
+        JSONObject jsonObjectOutput = new JSONObject().accumulate("common-header", commonHeaderJsonObject)
+            .accumulate("status", new JSONObject().accumulate("code", 200).accumulate("value", errMsg));
         dmaapOutgoingMessage = new DmaapOutgoingMessage();
         dmaapOutgoingMessage.setRpcName(event.getRpcName());
         dmaapOutgoingMessage.setCorrelationID(event.getCorrelationID());
         dmaapOutgoingMessage.setType("error");
         dmaapOutgoingMessage.setVersion(event.getVersion());
-        JSONObject jsonObjectBody = new JSONObject().accumulate("output",jsonObjectOutput);
+        JSONObject jsonObjectBody = new JSONObject().accumulate("output", jsonObjectOutput);
         JsonNode jsonNodeBody = Mapper.toJsonNodeFromJsonString(jsonObjectBody.toString());
         dmaapOutgoingMessage.setBody(jsonNodeBody);
         return dmaapOutgoingMessage;
     }
 
     public static String extractRequestIdWithSubId(JsonNode dmaapBody) {
-        //TODO: null pointer exception if dmaapBody is null, check if null or ensure is not null before calling
+
+        if (dmaapBody == null) {
+            throw new IllegalArgumentException("Dmaap body is null");
+        }
+
         JsonNode commonHeaderJsonNode = dmaapBody.get("input").get("common-header");
-        String requestId = getValue(commonHeaderJsonNode,"request-id","");
-        String subRequestId = getValue(commonHeaderJsonNode,"sub-request-id","");
-        if(!StringUtils.isEmpty(subRequestId)){
-            requestId = requestId +"-"+subRequestId;
+        String requestId = getValue(commonHeaderJsonNode, "request-id", "");
+        String subRequestId = getValue(commonHeaderJsonNode, "sub-request-id", "");
+        if (!StringUtils.isEmpty(subRequestId)) {
+            requestId = requestId + "-" + subRequestId;
         }
         return requestId;
     }
 
     public static Integer extractStatusCode(JsonNode event) {
+
+        if (event == null){
+            throw new IllegalArgumentException("Input event is null");
+        }
+
         Integer statusCode;
         statusCode = event.get("output").get("status").get("code").asInt();
         return statusCode;
     }
 
-    private static String getValue(JsonNode jsonNode,String name,String defaultValue){
-        if(jsonNode == null){
+    private static String getValue(JsonNode jsonNode, String name, String defaultValue) {
+        if (jsonNode == null) {
             return defaultValue;
         }
         JsonNode childJsonNode = jsonNode.get(name);
-        if(childJsonNode == null){
+        if (childJsonNode == null) {
             return defaultValue;
         }
         String value = childJsonNode.asText();
-        if(value == null){
+        if (value == null) {
             return defaultValue;
         }
         return value;
index 9334a8f..8ede2ba 100644 (file)
@@ -66,7 +66,7 @@ public class WorkerImpl implements Runnable {
         // message at the end
         try {
             JsonNode outputJsonNode = doDG(event.getRpcName(), event.getBody());
-            DmaapOutgoingMessage dmaapOutgoingMessage= Converter.convJsonNodeToDmaapOutgoingMessage(event, outputJsonNode);
+            DmaapOutgoingMessage dmaapOutgoingMessage= Converter.convertJsonNodeToDmaapOutgoingMessage(event, outputJsonNode);
             postMessageToDMaaP(dmaapOutgoingMessage,requestIdWithSubId);
             Integer statusCode = extractStatusCode(dmaapOutgoingMessage.getBody());
             if (ProviderOperations.isSucceeded(statusCode)) {
@@ -114,7 +114,7 @@ public class WorkerImpl implements Runnable {
     private void postMessageToDMaaP(DmaapOutgoingMessage dmaapOutgoingMessage,String requestIdWithSubId) {
         String dmaapOutgoingMessageJsonString;
         try {
-            dmaapOutgoingMessageJsonString = Converter.convDmaapOutgoingMessageToJsonString(dmaapOutgoingMessage);
+            dmaapOutgoingMessageJsonString = Converter.convertDmaapOutgoingMessageToJsonString(dmaapOutgoingMessage);
             dmaap.postStatus(dmaapOutgoingMessage.getCambriaPartition(),dmaapOutgoingMessageJsonString);
         } catch (JsonProcessingException e) {
             LOG.error("failed to postMessageToDMaaP requestIdWithSubId: "+requestIdWithSubId+" dmaapOutgoingMessage: "+dmaapOutgoingMessage, e);
diff --git a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/LCM/TestConverter.java b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/LCM/TestConverter.java
deleted file mode 100644 (file)
index f9fb7f4..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP : APPC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Copyright (C) 2017 Amdocs
- * =============================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.appc.listener.LCM;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import org.junit.Assert;
-import org.junit.Test;
-import org.onap.appc.listener.LCM.conv.Converter;
-import org.onap.appc.listener.LCM.model.DmaapIncomingMessage;
-import org.onap.appc.listener.LCM.model.DmaapOutgoingMessage;
-import org.onap.appc.listener.util.Mapper;
-
-public class TestConverter {
-
-    private String jsonInputBodyStr ="{\"input\":{ \"common-header\": { \"timestamp\": \"2016-08-03T08:50:18.97Z\", \"api-ver\": \"1\", \"originator-id\": \"1\", \"request-id\": \"123\", \"sub-request-id\": \"1\", \"flags\": { \"force\":\"TRUE\", \"ttl\":\"9900\" } }, \"action\": \"Stop\", \"action-identifiers\": { \"vnf-id\": \"TEST\" } }}";
-    private String jsonOutputBodyStr ="{\"output\":{\"common-header\":{\"timestamp\":\"2016-08-03T08:50:18.97Z\",\"api-ver\":\"1\",\"flags\":{\"force\":\"TRUE\",\"ttl\":\"9900\"},\"sub-request-id\":\"1\",\"request-id\":\"123\",\"originator-id\":\"1\"},\"status\":{\"value\":\"TestException\",\"code\":200}}}";
-
-    @Test
-    public void buildDmaapOutgoingMessageWithUnexpectedErrorTest() throws JsonProcessingException {
-        DmaapIncomingMessage dmaapIncomingMessage = buildDmaapIncomingMessage();
-        String errMsg = "TestException";
-        DmaapOutgoingMessage dmaapOutgoingMessage = Converter.buildDmaapOutgoingMessageWithUnexpectedError(dmaapIncomingMessage, new Exception(errMsg));
-        int code = dmaapOutgoingMessage.getBody().get("output").get("status").get("code").asInt();
-        String value = dmaapOutgoingMessage.getBody().get("output").get("status").get("value").asText();
-        Assert.assertEquals(200,code);
-        Assert.assertEquals(errMsg,value);
-    }
-
-    private  static String expectedDmaapOutgoingMessageAsJsonString = "{\"body\":{\"output\":{\"common-header\":{\"timestamp\":\"2016-08-03T08:50:18.97Z\",\"api-ver\":\"1\",\"flags\":{\"force\":\"TRUE\",\"ttl\":\"9900\"},\"sub-request-id\":\"1\",\"request-id\":\"123\",\"originator-id\":\"1\"},\"status\":{\"value\":\"TestException\",\"code\":200}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"test\"}";
-    @Test
-    public void convDmaapOutgoingMessageToJsonStringTest() throws JsonProcessingException {
-        DmaapOutgoingMessage dmaapOutgoingMessage = buildDmaapOutgoingMessage();
-        String dmaapOutgoingMessageAsJsonString = Converter.convDmaapOutgoingMessageToJsonString(dmaapOutgoingMessage);
-//        Assert.assertEquals(dmaapOutgoingMessageAsJsonString,dmaapOutgoingMessageAsJsonString);
-        Assert.assertEquals(expectedDmaapOutgoingMessageAsJsonString,dmaapOutgoingMessageAsJsonString);
-    }
-
-    private DmaapIncomingMessage buildDmaapIncomingMessage() {
-        DmaapIncomingMessage dmaapIncomingMessage = new DmaapIncomingMessage();
-        dmaapIncomingMessage.setRpcName("test");
-        JsonNode jsonNode = Mapper.toJsonNodeFromJsonString(jsonInputBodyStr);
-        dmaapIncomingMessage.setBody(jsonNode);
-        return dmaapIncomingMessage;
-
-    }
-
-    private DmaapOutgoingMessage buildDmaapOutgoingMessage() {
-        DmaapOutgoingMessage dmaapOutgoingMessage = new DmaapOutgoingMessage();
-        dmaapOutgoingMessage.setRpcName("test");
-        JsonNode jsonNode = Mapper.toJsonNodeFromJsonString(jsonOutputBodyStr);
-        dmaapOutgoingMessage.setBody(jsonNode);
-        return dmaapOutgoingMessage;
-
-    }
-
-
-    @Test
-    public void extractRequestIdWithSubIdTest() {
-        DmaapIncomingMessage dmaapIncomingMessage = buildDmaapIncomingMessage();
-        String equestIdWithSubId = Converter.extractRequestIdWithSubId(dmaapIncomingMessage.getBody());
-        Assert.assertEquals("123-1",equestIdWithSubId);
-    }
-
-    @Test
-    public void extractStatusCodeTest() {
-        DmaapOutgoingMessage dmaapOutgoingMessage = buildDmaapOutgoingMessage();
-        Integer statusCode = Converter.extractStatusCode(dmaapOutgoingMessage.getBody());
-        Assert.assertEquals(200L,statusCode.longValue());
-    }
-
-}
diff --git a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/LCM/conv/ConverterTest.java b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/LCM/conv/ConverterTest.java
new file mode 100644 (file)
index 0000000..f51a6a4
--- /dev/null
@@ -0,0 +1,170 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Copyright (C) 2017 Amdocs
+ * =============================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.appc.listener.LCM.conv;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import org.junit.Assert;
+import org.junit.Test;
+import org.onap.appc.listener.LCM.model.DmaapIncomingMessage;
+import org.onap.appc.listener.LCM.model.DmaapMessage;
+import org.onap.appc.listener.LCM.model.DmaapOutgoingMessage;
+import org.onap.appc.listener.demo.model.OutgoingMessage;
+import org.onap.appc.listener.util.Mapper;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+
+public class ConverterTest {
+
+    private static final String jsonInputBodyStr = "{\"input\":{ \"common-header\": { \"timestamp\": \"2016-08-03T08:50:18.97Z\", "
+        + "\"api-ver\": \"1\", \"originator-id\": \"1\", \"request-id\": \"123\", \"sub-request-id\": \"1\", "
+        + "\"flags\": { \"force\":\"TRUE\", \"ttl\":\"9900\" } }, \"action\": \"Stop\", "
+        + "\"action-identifiers\": { \"vnf-id\": \"TEST\" } }}";
+
+    private static final String jsonOutputBodyStr = "{\"output\":{\"common-header\":{\"timestamp\":\"2016-08-03T08:50:18.97Z\","
+        + "\"api-ver\":\"1\",\"flags\":{\"force\":\"TRUE\",\"ttl\":\"9900\"},\"sub-request-id\":\"1\","
+        + "\"request-id\":\"123\",\"originator-id\":\"1\"},\"status\":{\"value\":\"TestException\",\"code\":200}}}";
+
+    private static final String expectedDmaapOutgoingMessageAsJsonString = "{\"body\":{\"output\":{\"common-header\":"
+        + "{\"timestamp\":\"2016-08-03T08:50:18.97Z\",\"api-ver\":\"1\",\"flags\":{\"force\":\"TRUE\",\"ttl\":\"9900\"},"
+        + "\"sub-request-id\":\"1\",\"request-id\":\"123\",\"originator-id\":\"1\"},\"status\":"
+        + "{\"value\":\"TestException\",\"code\":200}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"test\"}";
+
+
+    @Test(expected = IllegalArgumentException.class)
+    public void convertJsonNodeToDmaapOutgoingMessage_should_throw_when_given_null_arguments() {
+
+        Converter.convertJsonNodeToDmaapOutgoingMessage(null, null);
+    }
+
+    @Test
+    public void convertJsonNodeToDmaapOutgoingMessage_should_convert_to_outgoing_message() {
+
+        DmaapIncomingMessage message = new DmaapIncomingMessage();
+        message.setRpcName("test");
+        message.setCorrelationID("test-1");
+        message.setVersion("v1");
+        JsonNode jsonNode = Mapper.toJsonNodeFromJsonString(jsonInputBodyStr);
+        message.setBody(jsonNode);
+
+        DmaapOutgoingMessage result = Converter.convertJsonNodeToDmaapOutgoingMessage(message, jsonNode);
+
+        assertEquals("test", result.getRpcName());
+        assertEquals("test-1", result.getCorrelationID());
+        assertEquals("v1", result.getVersion());
+        assertEquals(jsonNode, result.getBody());
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void convertDmaapOutgoingMessageToJsonString_should_throw_when_given_null_arguments()
+        throws JsonProcessingException {
+
+        Converter.convertDmaapOutgoingMessageToJsonString(null);
+    }
+
+    @Test
+    public void convertDmaapOutgoingMessageToJsonString_should_return_converted_json_string()
+        throws JsonProcessingException {
+
+        DmaapOutgoingMessage message = new DmaapOutgoingMessage();
+        message.setRpcName("test");
+        JsonNode jsonNode = Mapper.toJsonNodeFromJsonString(jsonOutputBodyStr);
+        message.setBody(jsonNode);
+
+        assertEquals(expectedDmaapOutgoingMessageAsJsonString,
+            Converter.convertDmaapOutgoingMessageToJsonString(message));
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void buildDmaapOutgoingMessageWithUnexpectedErrorTest_should_throw_given_null_arguments()
+        throws JsonProcessingException {
+
+        Converter.buildDmaapOutgoingMessageWithUnexpectedError(null, null);
+    }
+
+    @Test
+    public void buildDmaapOutgoingMessageWithUnexpectedErrorTest_should_build_valid_outgoing_message()
+        throws JsonProcessingException {
+
+        DmaapIncomingMessage dmaapIncomingMessage = buildDmaapIncomingMessage();
+        String errMsg = "TestException";
+        DmaapOutgoingMessage dmaapOutgoingMessage = Converter
+            .buildDmaapOutgoingMessageWithUnexpectedError(dmaapIncomingMessage, new Exception(errMsg));
+        int code = dmaapOutgoingMessage.getBody().get("output").get("status").get("code").asInt();
+        String value = dmaapOutgoingMessage.getBody().get("output").get("status").get("value").asText();
+        assertEquals(200, code);
+        assertEquals(errMsg, value);
+    }
+
+
+    @Test(expected = IllegalArgumentException.class)
+    public void extractRequestIdWithSubId_should_throw_given_null_argument() throws SvcLogicException {
+
+        Converter.extractRequestIdWithSubId(null);
+    }
+
+    @Test
+    public void extractRequestIdWithSubIdTest_should_extract_id_with_subDd() throws SvcLogicException {
+        DmaapIncomingMessage dmaapIncomingMessage = buildDmaapIncomingMessage();
+
+        String requestIdWithSubId = Converter.extractRequestIdWithSubId(dmaapIncomingMessage.getBody());
+        assertEquals("123-1", requestIdWithSubId);
+    }
+
+
+
+    @Test(expected = IllegalArgumentException.class)
+    public void extractStatusCode_should_throw_given_null_argument() {
+        Converter.extractStatusCode(null);
+    }
+
+
+    @Test
+    public void extractStatusCode_should_extract_valid_status_code() {
+        DmaapOutgoingMessage dmaapOutgoingMessage = buildDmaapOutgoingMessage();
+        Integer statusCode = Converter.extractStatusCode(dmaapOutgoingMessage.getBody());
+        assertEquals(200L, statusCode.longValue());
+    }
+
+    private DmaapIncomingMessage buildDmaapIncomingMessage() {
+        DmaapIncomingMessage dmaapIncomingMessage = new DmaapIncomingMessage();
+        dmaapIncomingMessage.setRpcName("test");
+        JsonNode jsonNode = Mapper.toJsonNodeFromJsonString(jsonInputBodyStr);
+        dmaapIncomingMessage.setBody(jsonNode);
+        return dmaapIncomingMessage;
+
+    }
+
+    private DmaapOutgoingMessage buildDmaapOutgoingMessage() {
+        DmaapOutgoingMessage dmaapOutgoingMessage = new DmaapOutgoingMessage();
+        dmaapOutgoingMessage.setRpcName("test");
+        JsonNode jsonNode = Mapper.toJsonNodeFromJsonString(jsonOutputBodyStr);
+        dmaapOutgoingMessage.setBody(jsonNode);
+        return dmaapOutgoingMessage;
+
+    }
+
+}