Use new addTopic() method in models
[policy/models.git] / models-interactions / model-actors / actor.appc / src / test / java / org / onap / policy / controlloop / actor / appc / AppcServiceProviderTest.java
index e1fdd39..249e1fc 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * AppcServiceProviderTest
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
 package org.onap.policy.controlloop.actor.appc;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.time.Instant;
 import java.util.HashMap;
 import java.util.UUID;
-
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -37,7 +36,7 @@ import org.onap.policy.appc.Request;
 import org.onap.policy.appc.Response;
 import org.onap.policy.appc.ResponseCode;
 import org.onap.policy.appc.util.Serialization;
-import org.onap.policy.common.endpoints.http.server.HttpServletServer;
+import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
 import org.onap.policy.controlloop.ControlLoopEventStatus;
 import org.onap.policy.controlloop.ControlLoopOperation;
 import org.onap.policy.controlloop.ControlLoopTargetType;
@@ -45,19 +44,32 @@ import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.policy.Policy;
 import org.onap.policy.controlloop.policy.Target;
 import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.drools.system.PolicyEngine;
 import org.onap.policy.simulators.Util;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class AppcServiceProviderTest {
 
+    private static final String GENERIC_VNF_ID = "generic-vnf.vnf-id";
+
+    private static final String MODIFY_CONFIG = "ModifyConfig";
+
+    private static final String JSON_OUTPUT = "JSON Output: \n";
+
     private static final Logger logger = LoggerFactory.getLogger(AppcServiceProviderTest.class);
 
     private static final VirtualControlLoopEvent onsetEvent;
     private static final ControlLoopOperation operation;
     private static final Policy policy;
 
+    private static final String KEY1 = "my-keyA";
+    private static final String KEY2 = "my-keyB";
+    private static final String SUBKEY = "sub-key";
+
+    private static final String VALUE1 = "'my-value'".replace('\'', '"');
+    private static final String VALUE2 = "{'sub-key':20}".replace('\'', '"');
+    private static final String SUBVALUE = "20";
+
     static {
         /*
          * Construct an onset with an AAI subtag containing generic-vnf.vnf-id and a target type of
@@ -78,7 +90,7 @@ public class AppcServiceProviderTest {
         /* Construct an operation with an APPC actor and ModifyConfig operation. */
         operation = new ControlLoopOperation();
         operation.setActor("APPC");
-        operation.setOperation("ModifyConfig");
+        operation.setOperation(MODIFY_CONFIG);
         operation.setTarget("VNF");
         operation.setEnd(Instant.now());
         operation.setSubRequestId("1");
@@ -90,28 +102,20 @@ public class AppcServiceProviderTest {
         policy.setActor("APPC");
         policy.setTarget(new Target(TargetType.VNF));
         policy.getTarget().setResourceID("Eace933104d443b496b8.nodes.heat.vpg");
-        policy.setRecipe("ModifyConfig");
+        policy.setRecipe(MODIFY_CONFIG);
         policy.setPayload(null);
         policy.setRetry(2);
         policy.setTimeout(300);
 
-        /* Set environment properties */
-        PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
-        PolicyEngine.manager.setEnvironmentProperty("aai.username", "AAI");
-        PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
-
     }
 
     /**
      * Set up before test class.
+     * @throws Exception if the A&AI simulator cannot be started
      */
     @BeforeClass
-    public static void setUpSimulator() {
-        try {
-            Util.buildAaiSim();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
+    public static void setUpSimulator() throws Exception {
+        Util.buildAaiSim();
     }
 
     /**
@@ -119,11 +123,64 @@ public class AppcServiceProviderTest {
      */
     @AfterClass
     public static void tearDownSimulator() {
-        HttpServletServer.factory.destroy();
+        HttpServletServerFactoryInstance.getServerFactory().destroy();
     }
 
     @Test
     public void constructModifyConfigRequestTest() {
+        policy.setPayload(new HashMap<>());
+        policy.getPayload().put(KEY1, VALUE1);
+        policy.getPayload().put(KEY2, VALUE2);
+
+        Request appcRequest;
+        appcRequest = AppcActorServiceProvider.constructRequest(onsetEvent, operation, policy, "vnf01");
+
+        /* The service provider must return a non null APPC request */
+        assertNotNull(appcRequest);
+
+        /* A common header is required and cannot be null */
+        assertNotNull(appcRequest.getCommonHeader());
+        assertEquals(appcRequest.getCommonHeader().getRequestId(), onsetEvent.getRequestId());
+
+        /* An action is required and cannot be null */
+        assertNotNull(appcRequest.getAction());
+        assertEquals(MODIFY_CONFIG, appcRequest.getAction());
+
+        /* A payload is required and cannot be null */
+        assertNotNull(appcRequest.getPayload());
+        assertTrue(appcRequest.getPayload().containsKey(GENERIC_VNF_ID));
+        assertNotNull(appcRequest.getPayload().get(GENERIC_VNF_ID));
+        assertTrue(appcRequest.getPayload().containsKey(KEY1));
+        assertTrue(appcRequest.getPayload().containsKey(KEY2));
+
+        logger.debug("APPC Request: \n" + appcRequest.toString());
+
+        /* Print out request as json to make sure serialization works */
+        String jsonRequest = Serialization.gsonPretty.toJson(appcRequest);
+        logger.debug(JSON_OUTPUT + jsonRequest);
+
+        /* The JSON string must contain the following fields */
+        assertTrue(jsonRequest.contains("CommonHeader"));
+        assertTrue(jsonRequest.contains("Action"));
+        assertTrue(jsonRequest.contains(MODIFY_CONFIG));
+        assertTrue(jsonRequest.contains("Payload"));
+        assertTrue(jsonRequest.contains(GENERIC_VNF_ID));
+        assertTrue(jsonRequest.contains(KEY1));
+        assertTrue(jsonRequest.contains(KEY2));
+        assertTrue(jsonRequest.contains(SUBKEY));
+        assertTrue(jsonRequest.contains(SUBVALUE));
+        assertFalse(jsonRequest.contains(SUBVALUE + ".0"));
+
+        Response appcResponse = new Response(appcRequest);
+        appcResponse.getStatus().setCode(ResponseCode.SUCCESS.getValue());
+        appcResponse.getStatus().setDescription("AppC success");
+        /* Print out request as json to make sure serialization works */
+        String jsonResponse = Serialization.gsonPretty.toJson(appcResponse);
+        logger.debug(JSON_OUTPUT + jsonResponse);
+    }
+
+    @Test
+    public void constructModifyConfigRequestTest_NullPayload() {
 
         Request appcRequest;
         appcRequest = AppcActorServiceProvider.constructRequest(onsetEvent, operation, policy, "vnf01");
@@ -137,34 +194,32 @@ public class AppcServiceProviderTest {
 
         /* An action is required and cannot be null */
         assertNotNull(appcRequest.getAction());
-        assertEquals("ModifyConfig", appcRequest.getAction());
+        assertEquals(MODIFY_CONFIG, appcRequest.getAction());
 
         /* A payload is required and cannot be null */
         assertNotNull(appcRequest.getPayload());
-        assertTrue(appcRequest.getPayload().containsKey("generic-vnf.vnf-id"));
-        assertNotNull(appcRequest.getPayload().get("generic-vnf.vnf-id"));
-        assertTrue(appcRequest.getPayload().containsKey("pg-streams"));
+        assertTrue(appcRequest.getPayload().containsKey(GENERIC_VNF_ID));
+        assertNotNull(appcRequest.getPayload().get(GENERIC_VNF_ID));
 
         logger.debug("APPC Request: \n" + appcRequest.toString());
 
         /* Print out request as json to make sure serialization works */
         String jsonRequest = Serialization.gsonPretty.toJson(appcRequest);
-        logger.debug("JSON Output: \n" + jsonRequest);
+        logger.debug(JSON_OUTPUT + jsonRequest);
 
         /* The JSON string must contain the following fields */
         assertTrue(jsonRequest.contains("CommonHeader"));
         assertTrue(jsonRequest.contains("Action"));
-        assertTrue(jsonRequest.contains("ModifyConfig"));
+        assertTrue(jsonRequest.contains(MODIFY_CONFIG));
         assertTrue(jsonRequest.contains("Payload"));
-        assertTrue(jsonRequest.contains("generic-vnf.vnf-id"));
-        assertTrue(jsonRequest.contains("pg-streams"));
+        assertTrue(jsonRequest.contains(GENERIC_VNF_ID));
 
         Response appcResponse = new Response(appcRequest);
         appcResponse.getStatus().setCode(ResponseCode.SUCCESS.getValue());
         appcResponse.getStatus().setDescription("AppC success");
         /* Print out request as json to make sure serialization works */
         String jsonResponse = Serialization.gsonPretty.toJson(appcResponse);
-        logger.debug("JSON Output: \n" + jsonResponse);
+        logger.debug(JSON_OUTPUT + jsonResponse);
     }
 
     @Test