Add SO VF Module Delete Operation
[policy/models.git] / models-interactions / model-actors / actor.so / src / test / java / org / onap / policy / controlloop / actor / so / SoActorServiceProviderTest.java
index a7bdf1a..cdd8a33 100644 (file)
 
 package org.onap.policy.controlloop.actor.so;
 
+import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 import java.util.UUID;
+import java.util.stream.Collectors;
 import org.apache.commons.io.IOUtils;
 import org.junit.Test;
-import org.onap.policy.aai.AaiNqResponse;
-import org.onap.policy.aai.AaiNqResponseWrapper;
+import org.onap.policy.aai.AaiCqResponse;
 import org.onap.policy.controlloop.ControlLoopOperation;
 import org.onap.policy.controlloop.VirtualControlLoopEvent;
+import org.onap.policy.controlloop.actor.test.BasicActor;
 import org.onap.policy.controlloop.policy.Policy;
+import org.onap.policy.controlloop.policy.Target;
 import org.onap.policy.so.SoOperationType;
 import org.onap.policy.so.SoRequest;
 import org.onap.policy.so.SoRequestParameters;
 import org.onap.policy.so.util.Serialization;
 
-public class SoActorServiceProviderTest {
+public class SoActorServiceProviderTest extends BasicActor {
 
+    private static final String C_VALUE = "cvalue";
+    private static final String A_VALUE = "avalue";
     private static final String VF_MODULE_CREATE = "VF Module Create";
     private static final String VF_MODULE_DELETE = "VF Module Delete";
 
+    private void instantiateTargetCq(Policy policy) {
+
+        Target target = new Target();
+        target.setModelCustomizationId("47958575-138f-452a-8c8d-d89b595f8164");
+        target.setModelInvariantId("e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e");
+        target.setModelName("VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0");
+        target.setModelVersion("1");
+        target.setModelVersionId("94b18b1d-cc91-4f43-911a-e6348665f292");
+
+        policy.setTarget(target);
+    }
+
+    @Test
+    public void testConstructor() {
+        SoActorServiceProvider prov = new SoActorServiceProvider();
+
+        // verify that it has the operators we expect
+        var expected = Arrays.asList(VfModuleCreate.NAME, VfModuleDelete.NAME).stream().sorted()
+                        .collect(Collectors.toList());
+        var actual = prov.getOperationNames().stream().sorted().collect(Collectors.toList());
+
+        assertEquals(expected.toString(), actual.toString());
+    }
+
     @Test
-    public void testConstructRequest() throws Exception {
+    public void testActorService() {
+        // verify that it all plugs into the ActorService
+        verifyActorService(SoActorServiceProvider.NAME, "service.yaml");
+    }
+
+    @Test
+    public void testSendRequest() {
+        assertThatCode(() -> SoActorServiceProvider.sendRequest(UUID.randomUUID().toString(), null, null, null, null,
+                        null)).doesNotThrowAnyException();
+    }
+
+    @Test
+    public void testMethods() {
+        SoActorServiceProvider sp = new SoActorServiceProvider();
+
+        assertEquals("SO", sp.actor());
+        assertEquals(2, sp.recipes().size());
+        assertEquals(VF_MODULE_CREATE, sp.recipes().get(0));
+        assertEquals(VF_MODULE_DELETE, sp.recipes().get(1));
+        assertEquals(0, sp.recipePayloads(VF_MODULE_CREATE).size());
+        assertEquals(0, sp.recipeTargets("unknown recipe").size());
+        assertEquals(1, sp.recipeTargets(VF_MODULE_CREATE).size());
+    }
+
+    @Test
+    public void testConstructRequestCq() throws Exception {
         VirtualControlLoopEvent onset = new VirtualControlLoopEvent();
         final ControlLoopOperation operation = new ControlLoopOperation();
-        final AaiNqResponseWrapper aaiNqResp = loadAaiResponse(onset, "aai/AaiNqResponse-Full.json");
-
+        final AaiCqResponse aaiCqResp = loadAaiResponseCq("aai/AaiCqResponseFull.json");
+        final AaiCqResponse aaiCqRespMissing = loadAaiResponseCq("aai/AaiCqResponseMissing.json");
         final UUID requestId = UUID.randomUUID();
         onset.setRequestId(requestId);
 
         Policy policy = new Policy();
         policy.setActor("Dorothy");
         policy.setRecipe("GoToOz");
-        
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp));
+
+        instantiateTargetCq(policy);
+
+        assertNull(new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqResp));
 
         policy.setActor("SO");
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp));
+
+        assertNull(new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqRespMissing));
 
         policy.setRecipe(VF_MODULE_CREATE);
 
         // empty policy payload
-        SoRequest request = new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp);
+        SoRequest request = new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqResp);
         assertNotNull(request);
 
-        assertEquals("my_module_3", request.getRequestDetails().getRequestInfo().getInstanceName());
+        assertEquals("vfModuleName", request.getRequestDetails().getRequestInfo().getInstanceName());
         assertEquals("policy", request.getRequestDetails().getRequestInfo().getRequestorId());
         assertEquals("RegionOne", request.getRequestDetails().getCloudConfiguration().getLcpCloudRegionId());
 
         // non-empty policy payload
         policy.setPayload(makePayload());
-        request = new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp);
+        request = new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqResp);
         assertNotNull(request);
         assertEquals(true, request.getRequestDetails().getRequestParameters().isUsePreload());
-        assertEquals("avalue", request.getRequestDetails().getRequestParameters().getUserParams().get(0).get("akey"));
+        assertEquals(A_VALUE, request.getRequestDetails().getRequestParameters().getUserParams().get(0).get("akey"));
         assertEquals(1, request.getRequestDetails().getConfigurationParameters().size());
-        assertEquals("cvalue", request.getRequestDetails().getConfigurationParameters().get(0).get("ckey"));
-        
+        assertEquals(C_VALUE, request.getRequestDetails().getConfigurationParameters().get(0).get("ckey"));
+
         // payload with config, but no request params
         policy.setPayload(makePayload());
         policy.getPayload().remove(SoActorServiceProvider.REQ_PARAM_NM);
-        request = new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp);
+        request = new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqResp);
         assertNotNull(request);
         assertNull(request.getRequestDetails().getRequestParameters());
         assertNotNull(request.getRequestDetails().getConfigurationParameters());
-        
+
         // payload with request, but no config params
         policy.setPayload(makePayload());
         policy.getPayload().remove(SoActorServiceProvider.CONFIG_PARAM_NM);
-        request = new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp);
+        request = new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqResp);
         assertNotNull(request);
         assertNotNull(request.getRequestDetails().getRequestParameters());
         assertNull(request.getRequestDetails().getConfigurationParameters());
 
         // null response
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy, null));
-
-        // response has no base VF module
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy,
-                        loadAaiResponse(onset, "aai/AaiNqResponse-NoBase.json")));
-
-        // response has no non-base VF modules (other than the "dummy")
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy,
-                        loadAaiResponse(onset, "aai/AaiNqResponse-NoNonBase.json")));
+        assertNull(new SoActorServiceProvider().constructRequestCq(onset, operation, policy, null));
 
+        instantiateTargetCq(policy);
         policy.setRecipe(VF_MODULE_DELETE);
-        SoRequest deleteRequest = new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp);
+        SoRequest deleteRequest = new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqResp);
         assertNotNull(deleteRequest);
         assertEquals(SoOperationType.DELETE_VF_MODULE, deleteRequest.getOperationType());
 
@@ -128,41 +178,27 @@ public class SoActorServiceProviderTest {
         policy.setRecipe(VF_MODULE_CREATE);
 
         // null tenant
-        aaiNqResp.getAaiNqResponse().getInventoryResponseItems().get(0).getItems().getInventoryResponseItems()
-                        .remove(1);
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp));
+        assertNull(new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqRespMissing));
 
         // null service item
-        aaiNqResp.getAaiNqResponse().getInventoryResponseItems().get(0).getItems().getInventoryResponseItems().get(0)
-                        .setItems(null);
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp));
+        assertNull(new SoActorServiceProvider().constructRequestCq(onset, operation, policy, aaiCqRespMissing));
 
-        // null response
-        aaiNqResp.setAaiNqResponse(null);
-        assertNull(new SoActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp));
+        assertNull(new SoActorServiceProvider().constructRequestCq(onset, operation, policy, null));
     }
 
-    @Test
-    public void testSendRequest() {
-        try {
-            SoActorServiceProvider.sendRequest(UUID.randomUUID().toString(), null, null, null, null, null);
-        } catch (Exception e) {
-            fail("Test should not throw an exception");
-        }
+    /**
+     * Reads an AAI vserver named-query response from a file.
+     *
+     * @param fileName name of the file containing the JSON response
+     * @return output from the AAI vserver named-query
+     * @throws IOException if the file cannot be read
+     */
+    private AaiCqResponse loadAaiResponseCq(String fileName) throws IOException {
+        String resp = IOUtils.toString(getClass().getResource(fileName), StandardCharsets.UTF_8);
+        return new AaiCqResponse(resp);
     }
 
-    @Test
-    public void testMethods() {
-        SoActorServiceProvider sp = new SoActorServiceProvider();
 
-        assertEquals("SO", sp.actor());
-        assertEquals(2, sp.recipes().size());
-        assertEquals(VF_MODULE_CREATE, sp.recipes().get(0));
-        assertEquals(VF_MODULE_DELETE, sp.recipes().get(1));
-        assertEquals(0, sp.recipePayloads(VF_MODULE_CREATE).size());
-        assertEquals(0, sp.recipeTargets("unknown recipe").size());
-        assertEquals(1, sp.recipeTargets(VF_MODULE_CREATE).size());
-    }
 
     /**
      * Creates a policy payload containing request & configuration parameters.
@@ -189,7 +225,7 @@ public class SoActorServiceProviderTest {
         params.setUsePreload(true);
 
         Map<String, String> map = new TreeMap<>();
-        map.put("akey", "avalue");
+        map.put("akey", A_VALUE);
 
         List<Map<String, String>> lst = new LinkedList<>();
         lst.add(map);
@@ -206,7 +242,7 @@ public class SoActorServiceProviderTest {
      */
     private String makeConfigParams() {
         Map<String, String> map = new TreeMap<>();
-        map.put("ckey", "cvalue");
+        map.put("ckey", C_VALUE);
 
         List<Map<String, String>> lst = new LinkedList<>();
         lst.add(map);
@@ -214,18 +250,4 @@ public class SoActorServiceProviderTest {
         return Serialization.gsonPretty.toJson(lst);
     }
 
-    /**
-     * Reads an AAI vserver named-query response from a file.
-     *
-     * @param onset the ONSET event
-     * @param fileName name of the file containing the JSON response
-     * @return output from the AAI vserver named-query
-     * @throws IOException if the file cannot be read
-     */
-    private AaiNqResponseWrapper loadAaiResponse(VirtualControlLoopEvent onset, String fileName) throws IOException {
-        String resp = IOUtils.toString(getClass().getResource(fileName), StandardCharsets.UTF_8);
-        AaiNqResponse aaiNqResponse = Serialization.gsonPretty.fromJson(resp, AaiNqResponse.class);
-
-        return new AaiNqResponseWrapper(onset.getRequestId(), aaiNqResponse);
-    }
 }