Modify Actors to use properties when provided
[policy/models.git] / models-interactions / model-actors / actor.appc / src / test / java / org / onap / policy / controlloop / actor / appc / ModifyConfigOperationTest.java
index 9c602f5..3b63514 100644 (file)
@@ -22,6 +22,7 @@ package org.onap.policy.controlloop.actor.appc;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -42,6 +43,7 @@ import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.mockito.Mock;
 import org.onap.aai.domain.yang.GenericVnf;
 import org.onap.policy.aai.AaiCqResponse;
 import org.onap.policy.appc.Request;
@@ -56,8 +58,14 @@ import org.onap.policy.controlloop.policy.PolicyResult;
 
 public class ModifyConfigOperationTest extends BasicAppcOperation {
 
+    @Mock
+    private GenericVnf genvnf;
+    @Mock
+    private AaiCqResponse cq;
+
     private ModifyConfigOperation oper;
 
+
     public ModifyConfigOperationTest() {
         super(DEFAULT_ACTOR, ModifyConfigOperation.NAME);
     }
@@ -77,6 +85,9 @@ public class ModifyConfigOperationTest extends BasicAppcOperation {
     @Override
     public void setUp() throws Exception {
         super.setUp();
+        when(genvnf.getVnfId()).thenReturn(MY_VNF);
+        when(cq.getGenericVnfByModelInvariantId(any())).thenReturn(genvnf);
+
         oper = new ModifyConfigOperation(params, config);
     }
 
@@ -95,14 +106,9 @@ public class ModifyConfigOperationTest extends BasicAppcOperation {
                         BidirectionalTopicParams.builder().sinkTopic(MY_SINK).sourceTopic(MY_SINK).build();
         config = new BidirectionalTopicConfig(blockingExecutor, opParams, topicMgr, AppcOperation.SELECTOR_KEYS);
 
-        AaiCqResponse cq = mock(AaiCqResponse.class);
-        GenericVnf genvnf = mock(GenericVnf.class);
-        when(genvnf.getVnfId()).thenReturn(MY_VNF);
-        when(cq.getGenericVnfByModelInvariantId(any())).thenReturn(genvnf);
-
         params.getContext().setProperty(AaiCqResponse.CONTEXT_KEY, cq);
 
-        params = params.toBuilder().retry(0).timeoutSec(5).executor(blockingExecutor).build();
+        params = params.toBuilder().retry(0).timeoutSec(5).executor(blockingExecutor).preprocessed(true).build();
 
         oper = new ModifyConfigOperation(params, config) {
             @Override
@@ -111,6 +117,8 @@ public class ModifyConfigOperationTest extends BasicAppcOperation {
             }
         };
 
+        oper.setProperty(OperationProperties.AAI_RESOURCE_VNF, genvnf);
+
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
         assertTrue(outcome.getResponse() instanceof Response);
@@ -168,23 +176,41 @@ public class ModifyConfigOperationTest extends BasicAppcOperation {
 
     @Test
     public void testMakeRequest() throws CoderException {
-        AaiCqResponse cq = new AaiCqResponse("{}");
+        oper.setProperty(OperationProperties.AAI_RESOURCE_VNF, genvnf);
+
+        oper.generateSubRequestId(2);
+        Request request = oper.makeRequest(2);
+        assertNotNull(request);
+        assertEquals(MY_VNF, request.getPayload().get(ModifyConfigOperation.VNF_ID_KEY));
+
+        verifyRequest("modifyConfig.json", request, IGNORE_FIELDS);
+    }
+
+    @Test
+    public void testGetVnfIdViaProperty() throws CoderException {
+        oper.setProperty(OperationProperties.AAI_RESOURCE_VNF, genvnf);
+        assertEquals(MY_VNF, oper.getVnfId());
+    }
+
+    @Test
+    public void testGetVnfId() throws CoderException {
+        // no CQ data
+        assertThatIllegalStateException().isThrownBy(() -> oper.getVnfId())
+                        .withMessage("target vnf-id could not be determined");
+
+        cq = new AaiCqResponse("{}");
 
         // missing vnf-id
         params.getContext().setProperty(AaiCqResponse.CONTEXT_KEY, cq);
-        assertThatIllegalArgumentException().isThrownBy(() -> oper.makeRequest(1));
+        assertThatIllegalArgumentException().isThrownBy(() -> oper.getVnfId())
+                        .withMessage("target vnf-id could not be found");
 
         // populate the CQ data with a vnf-id
-        GenericVnf genvnf = new GenericVnf();
+        genvnf = new GenericVnf();
         genvnf.setVnfId(MY_VNF);
         genvnf.setModelInvariantId(RESOURCE_ID);
         cq.setInventoryResponseItems(Arrays.asList(genvnf));
 
-        oper.generateSubRequestId(2);
-        Request request = oper.makeRequest(2);
-        assertNotNull(request);
-        assertEquals(MY_VNF, request.getPayload().get(ModifyConfigOperation.VNF_ID_KEY));
-
-        verifyRequest("modifyConfig.json", request, IGNORE_FIELDS);
+        assertEquals(MY_VNF, oper.getVnfId());
     }
 }