ChefAdapterImpl JUnits 45/33145/2
authorMichal Kabaj <michal.kabaj@nokia.com>
Tue, 27 Feb 2018 10:27:48 +0000 (11:27 +0100)
committerPatrick Brady <pb071s@att.com>
Thu, 1 Mar 2018 18:35:53 +0000 (18:35 +0000)
-Added new ChefAdapterImplTest class for new ChefAdapterImpl JUnits
-Added test for nodeObjectBuilder method - JSON Format is now verified using JSONObject
-Unified ChefAdapterImpl construction - removed unused constructors

Change-Id: I63f96bac0129b5f13d34efd3a173784e0b1d8a5d
Issue-ID: APPC-437
Signed-off-by: Michal Kabaj <michal.kabaj@nokia.com>
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/impl/ChefAdapterImplTest.java [new file with mode: 0644]
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/impl/TestChefAdapterImpl.java

index b180738..91ed636 100644 (file)
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.onap.ccsdk.sli.core</groupId>
index eb5ee7b..69b57f7 100644 (file)
@@ -115,28 +115,7 @@ public class ChefAdapterImpl implements ChefAdapter {
      * This default constructor is used as a work around because the activator wasnt getting called
      */
     public ChefAdapterImpl() {
-        initialize();
-    }
-
-    public ChefAdapterImpl(Properties props) {
-        initialize();
-    }
-
-    /**
-     * This constructor is used primarily in the test cases to bypass initialization of the adapter for isolated,
-     * disconnected testing
-     *
-     * @param initialize True if the adapter is to be initialized, can false if not
-     */
-
-    public ChefAdapterImpl(boolean initialize) {
-        if (initialize) {
-            initialize();
-        }
-    }
-
-    public ChefAdapterImpl(String key) {
-        initialize();
+        logger.info("Initialize Chef Adapter");
     }
 
     @SuppressWarnings("nls")
@@ -394,12 +373,9 @@ public class ChefAdapterImpl implements ChefAdapter {
         String nodeObject = "{\"json_class\":\"Chef::Node\",\"default\":{" + defaults
             + "},\"chef_type\":\"node\",\"run_list\":[" + runList + "],\"override\":{" + overrides
             + "},\"normal\": {" + normal + "},\"automatic\":{},\"name\":\"" + name + "\",\"chef_environment\":\""
-            + chefEnvironment + "\"}";
+            + chefEnvironment + "\",}";
         logger.info(nodeObject);
-        RequestContext rc = new RequestContext(ctx);
-        rc.isAlive();
-        SvcLogicContext svcLogic = rc.getSvcLogicContext();
-        svcLogic.setAttribute("chef.nodeObject", nodeObject);
+        ctx.setAttribute("chef.nodeObject", nodeObject);
     }
 
     /**
@@ -757,15 +733,6 @@ public class ChefAdapterImpl implements ChefAdapter {
         logger.info(messageStr + ": " + svcLogic.getAttribute(messageStr));
     }
 
-
-    /**
-     * initialize the provider adapter by building the context cache
-     */
-    private void initialize() {
-
-        logger.info("Initialize Chef Adapter");
-    }
-
     @SuppressWarnings("static-method")
     private void doFailure(SvcLogicContext svcLogic, int code, String message) throws SvcLogicException {
 
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/impl/ChefAdapterImplTest.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/impl/ChefAdapterImplTest.java
new file mode 100644 (file)
index 0000000..c4c3e30
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2018 Nokia. All rights reserved.
+ * =============================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.appc.adapter.chef.impl;
+
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
+import java.util.Map;
+import org.json.JSONObject;
+import org.junit.Test;
+import org.onap.appc.adapter.chef.ChefAdapter;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+
+public class ChefAdapterImplTest {
+
+    private static final String EXPECTED_NODE_OBJECT_ATTR_NAME = "chef.nodeObject";
+
+    @Test
+    public void nodeObjectBuilder_shouldBuildJsonNodeObject_forPassedParams_andAddToSvcLogicContext() {
+        // GIVEN
+        Map<String, String> params = givenInputParams();
+
+        // WHEN
+        ChefAdapter chefAdapter = new ChefAdapterImpl();
+        SvcLogicContext svcLogicContext = new SvcLogicContext();
+        chefAdapter.nodeObejctBuilder(params, svcLogicContext);
+
+        // THEN
+        assertThat(resultJson(svcLogicContext)).isEqualTo(expectedJson());
+    }
+
+    private String resultJson(SvcLogicContext svcLogicContext) {
+        String resultJsonString = svcLogicContext.getAttribute(EXPECTED_NODE_OBJECT_ATTR_NAME);
+        return new JSONObject(resultJsonString).toString();
+    }
+
+    private Map<String, String> givenInputParams() {
+        return ImmutableMap.<String, String>builder()
+            .put("nodeobject.name", "testNodeName")
+            .put("nodeobject.normal", "val:normal")
+            .put("nodeobject.overrides", "val:override")
+            .put("nodeobject.defaults", "val:default")
+            .put("nodeobject.run_list", "val1,val2,val3")
+            .put("nodeobject.chef_environment", "testChefEnvVal")
+            .build();
+    }
+
+    private String expectedJson() {
+        JSONObject expectedJson = new JSONObject();
+        expectedJson.put("json_class", "Chef::Node");
+        expectedJson.put("chef_type", "node");
+        expectedJson.put("automatic", Collections.emptyMap());
+        expectedJson.put("name", "testNodeName");
+        expectedJson.put("normal", ImmutableMap.of("val", "normal"));
+        expectedJson.put("override", ImmutableMap.of("val", "override"));
+        expectedJson.put("default", ImmutableMap.of("val", "default"));
+        expectedJson.put("run_list", ImmutableList.of("val1", "val2", "val3"));
+        expectedJson.put("chef_environment", "testChefEnvVal");
+        return expectedJson.toString();
+    }
+}
\ No newline at end of file
index d5a5d8c..d5eb0af 100644 (file)
@@ -48,7 +48,7 @@ public class TestChefAdapterImpl {
 
     @Before
     public void setup() {
-        adapter = new ChefAdapterImpl(Boolean.TRUE);
+        adapter = new ChefAdapterImpl();
         params = new HashMap<>();
         params.put("pemPath",
                 "/src/test/resources/testclient.pem");