Update baseUrl of pms_v2.0
[portal/nonrtric-controlpanel.git] / webapp-backend / src / test / java / org / oransc / portal / nonrtric / controlpanel / policyagentapi / PolicyAgentApiImplTest.java
index 37fdd8d..1d84de4 100644 (file)
@@ -28,17 +28,17 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import com.google.gson.GsonBuilder;
-import com.google.gson.reflect.TypeToken;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
 
-import java.lang.reflect.Type;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
-import java.util.List;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.oransc.portal.nonrtric.controlpanel.model.ImmutablePolicyInfo;
 import org.oransc.portal.nonrtric.controlpanel.model.PolicyInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.PolicyInstance;
 import org.oransc.portal.nonrtric.controlpanel.model.PolicyInstances;
 import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient;
 import org.springframework.http.HttpStatus;
@@ -46,20 +46,27 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.client.HttpServerErrorException;
 import reactor.core.publisher.Mono;
 
-public class PolicyAgentApiImplTest {
-    private static final String URL_POLICY_SCHEMAS = "/policy_schemas";
+class PolicyAgentApiImplTest {
+    private static final String URL_POLICY_SCHEMAS = "/a1-policy/v2/policy-types";
     private static final String POLICY_TYPE_1_ID = "type1";
     private static final String POLICY_TYPE_1_VALID = "{\"title\":\"type1\"}";
     private static final String POLICY_TYPE_1_INVALID = "\"title\":\"type1\"}";
     private static final String POLICY_TYPE_2_VALID = "{\"title\":\"type2\"}";
     private static final String POLICY_1_ID = "policy1";
-    private static final String POLICY_1_VALID = "{\"policyId\":\"policy1\"}";
-    private static final String POLICY_1_INVALID = "\"policyId\":\"policy1\"}";
+    private static final String POLICY_DATA =
+        "{\"qosObjectives\":{\"priorityLevel\":22.0},\"scope\":{\"qosId\":\"22\",\"ueId\":\"22\"}}";
+    private static final String POLICY_1_VALID =
+        "{\"policy_id\":\"policy1\",\"policytype_id\":\"type1\",\"ric_id\":\"ric1\",\"policy_data\":" + POLICY_DATA
+            + ",\"service_id\":\"controlpanel\"}";
+    private static final String POLICY_1_INVALID = "\"policy_id\":\"policy1\"}";
     private static final String RIC_1_ID = "ric1";
-    private static final String RIC_1_INFO_VALID = "{\"ricName\":\"ric1\",\"policyTypes\":[\"type1\"]}";
-    private static final String RIC_1_INFO_INVALID = "{\"ricName\":\"ric1\",\"policyTypes\":\"type1\"]}";
+    private static final String RIC_1_INFO_VALID = "{\"ric_id\":\"ric1\",\"policytype_ids\":[\"type1\"]}";
+    private static final String RIC_1_INFO_INVALID = "{\"ric_id\":\"ric1\",\"policytype_ids\":\"type1\"]}";
     private static final String CLIENT_ERROR_MESSAGE = "XXXXXXX";
-
+    private static final String SERVICE_ID = "controlpanel";
+    private static final String TIMESTAMP = "2021-01-12T09:59:33.392470Z";
+    private static final String STATUS =
+        "{\"last_modified\": \"" + TIMESTAMP + "\",\"status\":{\"enforceStatus\": \"\",\"enforceReason\": \"\"}}";
     private static com.google.gson.Gson gson = new GsonBuilder() //
         .serializeNulls() //
         .create(); //
@@ -69,7 +76,7 @@ public class PolicyAgentApiImplTest {
     AsyncRestClient restClient;
 
     @BeforeEach
-    public void init() {
+    void init() {
         restClient = mock(AsyncRestClient.class);
         apiUnderTest = new PolicyAgentApiImpl(restClient);
     }
@@ -85,17 +92,18 @@ public class PolicyAgentApiImplTest {
     }
 
     @Test
-    public void testGetAllPolicyTypesFailure() {
+    void testGetAllPolicyTypesFailure() {
         whenGetReturnFailure(URL_POLICY_SCHEMAS, HttpStatus.NOT_FOUND, "");
         ResponseEntity<String> returnedResp = apiUnderTest.getAllPolicyTypes();
         assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
     }
 
     @Test
-    public void testGetAllPolicyTypesSuccessValidJson() {
-        String policyTypes = Arrays.asList(POLICY_TYPE_1_VALID, POLICY_TYPE_2_VALID).toString();
-
-        whenGetReturnOK(URL_POLICY_SCHEMAS, HttpStatus.OK, policyTypes);
+    void testGetAllPolicyTypesSuccessValidJson() {
+        String returnValue = "{\"policytype_ids\": [\"type1\",\"type2\"]}";
+        whenGetReturnOK(URL_POLICY_SCHEMAS, HttpStatus.OK, returnValue);
+        whenGetReturnOK(URL_POLICY_SCHEMAS + "/type1", HttpStatus.OK, "{\"policy_schema\":{}}");
+        whenGetReturnOK(URL_POLICY_SCHEMAS + "/type2", HttpStatus.OK, "{\"policy_schema\":{}}");
 
         ResponseEntity<String> resp = apiUnderTest.getAllPolicyTypes();
         assertTrue(resp.getBody().contains("\"name\":\"type1\""));
@@ -103,7 +111,7 @@ public class PolicyAgentApiImplTest {
     }
 
     @Test
-    public void testGetAllPolicyTypesSuccessInvalidJson() {
+    void testGetAllPolicyTypesSuccessInvalidJson() {
         String policyTypes = Arrays.asList(POLICY_TYPE_1_INVALID, POLICY_TYPE_2_VALID).toString();
         whenGetReturnOK(URL_POLICY_SCHEMAS, HttpStatus.OK, policyTypes);
 
@@ -114,11 +122,11 @@ public class PolicyAgentApiImplTest {
     }
 
     private String urlPolicyInstances(String type) {
-        return "/policies?type=" + type;
+        return "/a1-policy/v2/policies?policytype_id=" + type;
     }
 
     @Test
-    public void testGetPolicyInstancesForTypeFailure() {
+    void testGetPolicyInstancesForTypeFailure() {
         whenGetReturnFailure(urlPolicyInstances(POLICY_TYPE_1_ID), HttpStatus.NOT_FOUND, "");
 
         ResponseEntity<String> returnedResp = apiUnderTest.getPolicyInstancesForType(POLICY_TYPE_1_ID);
@@ -127,20 +135,21 @@ public class PolicyAgentApiImplTest {
     }
 
     @Test
-    public void testGetPolicyInstancesForTypeSuccessValidJson() {
-        String policyInstances = Arrays.asList(POLICY_1_VALID).toString();
-        String policyInstancesJson = parsePolicyInstancesJson(policyInstances);
+    void testGetPolicyInstancesForTypeSuccessValidJson() {
+        String policyInstances = "{\"policy_ids\":[\"policy1\"]}";
+        String policyInstancesJson = parsePolicyInstancesJson("[\"policy1\"]");
 
         whenGetReturnOK(urlPolicyInstances(POLICY_TYPE_1_ID), HttpStatus.OK, policyInstances);
+        whenGetReturnOK(urlPolicyInstance(POLICY_1_ID), HttpStatus.OK, POLICY_1_VALID);
+        whenGetReturnOK(urlPolicyStatus(POLICY_1_ID), HttpStatus.OK, STATUS);
 
         ResponseEntity<String> returnedResp = apiUnderTest.getPolicyInstancesForType(POLICY_TYPE_1_ID);
-
         assertEquals(returnedResp.getBody(), policyInstancesJson);
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
     }
 
     @Test
-    public void testGetPolicyInstancesForTypeSuccessInvalidJson() {
+    void testGetPolicyInstancesForTypeSuccessInvalidJson() {
         String policyInstances = Arrays.asList(POLICY_1_INVALID).toString();
 
         whenGetReturnOK(urlPolicyInstances(POLICY_TYPE_1_ID), HttpStatus.OK, policyInstances);
@@ -152,22 +161,26 @@ public class PolicyAgentApiImplTest {
     }
 
     private String urlPolicyInstance(String id) {
-        return "/policy?id=" + id;
+        return "/a1-policy/v2/policies/" + id;
+    }
+
+    private String urlPolicyStatus(String id) {
+        return "/a1-policy/v2/policies/" + id + "/status";
     }
 
     @Test
-    public void testGetPolicyInstance() {
+    void testGetPolicyInstance() {
         whenGetReturnOK(urlPolicyInstance(POLICY_1_ID), HttpStatus.OK, POLICY_1_VALID);
+        whenGetReturnOK(urlPolicyStatus(POLICY_1_ID), HttpStatus.OK, STATUS);
 
         ResponseEntity<Object> returnedResp = apiUnderTest.getPolicyInstance(POLICY_1_ID);
 
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
-        assertEquals(POLICY_1_VALID, returnedResp.getBody());
-
+        assertEquals(POLICY_DATA, gson.toJson(returnedResp.getBody()));
     }
 
-    private String urlPutPolicy(String type, String id, String ric) {
-        return "/policy?type=" + type + "&id=" + id + "&ric=" + ric + "&service=controlpanel";
+    private String urlPutPolicy() {
+        return "/a1-policy/v2/policies/";
     }
 
     private void whenPutReturnOK(String url, String putBody, HttpStatus status, String body) {
@@ -182,25 +195,43 @@ public class PolicyAgentApiImplTest {
     }
 
     @Test
-    public void testPutPolicyFailure() {
-        String url = urlPutPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, RIC_1_ID);
-        whenPutReturnFailure(url, POLICY_1_VALID, HttpStatus.NOT_FOUND, CLIENT_ERROR_MESSAGE);
+    void testPutPolicyFailure() {
+        String url = urlPutPolicy();
+        JsonElement data = JsonParser.parseString(POLICY_DATA).getAsJsonObject();
+        PolicyInstance i = PolicyInstance.builder() //
+            .policyId(POLICY_1_ID) //
+            .policyTypeId(POLICY_TYPE_1_ID) //
+            .ricId(RIC_1_ID) //
+            .policyData(data) //
+            .serviceId(SERVICE_ID) //
+            .build(); //
+
+        String jsonStr = gson.toJson(i);
+        whenPutReturnFailure(url, jsonStr, HttpStatus.NOT_FOUND, CLIENT_ERROR_MESSAGE);
 
         ResponseEntity<String> returnedResp =
-            apiUnderTest.putPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, POLICY_1_VALID, RIC_1_ID);
+            apiUnderTest.putPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, POLICY_DATA, RIC_1_ID);
 
         assertTrue(returnedResp.getBody().contains(CLIENT_ERROR_MESSAGE));
         assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
     }
 
     @Test
-    public void testPutPolicySuccess() {
-        String url = urlPutPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, RIC_1_ID);
-        whenPutReturnOK(url, POLICY_1_VALID, HttpStatus.OK, POLICY_1_VALID);
+    void testPutPolicySuccess() {
+        String url = urlPutPolicy();
+        JsonElement data = JsonParser.parseString(POLICY_DATA).getAsJsonObject();
+        PolicyInstance i = PolicyInstance.builder() //
+            .policyId(POLICY_1_ID) //
+            .policyTypeId(POLICY_TYPE_1_ID) //
+            .ricId(RIC_1_ID) //
+            .policyData(data) //
+            .serviceId(SERVICE_ID) //
+            .build(); //
+        String jsonStr = gson.toJson(i);
+        whenPutReturnOK(url, jsonStr, HttpStatus.OK, POLICY_1_VALID);
 
         ResponseEntity<String> returnedResp =
-            apiUnderTest.putPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, POLICY_1_VALID, RIC_1_ID);
-
+            apiUnderTest.putPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, POLICY_DATA, RIC_1_ID);
         assertNull(returnedResp.getBody());
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
     }
@@ -217,11 +248,11 @@ public class PolicyAgentApiImplTest {
     }
 
     private String deletePolicyUrl(String id) {
-        return "/policy?id=" + id;
+        return "/a1-policy/v2/policies/" + id;
     }
 
     @Test
-    public void testDeletePolicyFailure() {
+    void testDeletePolicyFailure() {
         whenDeleteReturnFailure(deletePolicyUrl(POLICY_1_ID), HttpStatus.NOT_FOUND, CLIENT_ERROR_MESSAGE);
 
         ResponseEntity<String> returnedResp = apiUnderTest.deletePolicy(POLICY_1_ID);
@@ -231,7 +262,7 @@ public class PolicyAgentApiImplTest {
     }
 
     @Test
-    public void testDeletePolicySuccess() {
+    void testDeletePolicySuccess() {
         whenDeleteReturnOK(deletePolicyUrl(POLICY_1_ID), HttpStatus.OK);
         ResponseEntity<String> returnedResp = apiUnderTest.deletePolicy(POLICY_1_ID);
 
@@ -239,14 +270,14 @@ public class PolicyAgentApiImplTest {
     }
 
     private String urlRicInfo(String typeName) {
-        return "/rics?policyType=" + typeName;
+        return "/a1-policy/v2/rics?policytype_id=" + typeName;
     }
 
     @Test
-    public void testGetRicsSupportingTypeValidJson() {
+    void testGetRicsSupportingTypeValidJson() {
         String rics = Arrays.asList(RIC_1_INFO_VALID).toString();
-
-        this.whenGetReturnOK(urlRicInfo(POLICY_TYPE_1_ID), HttpStatus.OK, rics);
+        String returnVal = "{\"rics\":" + rics + "}";
+        this.whenGetReturnOK(urlRicInfo(POLICY_TYPE_1_ID), HttpStatus.OK, returnVal);
 
         ResponseEntity<String> resp = apiUnderTest.getRicsSupportingType(POLICY_TYPE_1_ID);
 
@@ -255,7 +286,7 @@ public class PolicyAgentApiImplTest {
     }
 
     @Test
-    public void testGetRicsSupportingTypeInvalidJson() {
+    void testGetRicsSupportingTypeInvalidJson() {
         String rics = Arrays.asList(RIC_1_INFO_INVALID).toString();
 
         this.whenGetReturnOK(urlRicInfo(POLICY_TYPE_1_ID), HttpStatus.OK, rics);
@@ -267,12 +298,20 @@ public class PolicyAgentApiImplTest {
     }
 
     private String parsePolicyInstancesJson(String inputString) {
-        Type listType = new TypeToken<List<ImmutablePolicyInfo>>() {}.getType();
-        List<PolicyInfo> rspParsed = gson.fromJson(inputString, listType);
-        PolicyInstances policyInstances = new PolicyInstances();
-        for (PolicyInfo policy : rspParsed) {
-            policyInstances.add(policy);
+        JsonArray arr = JsonParser.parseString(inputString).getAsJsonArray();
+        PolicyInstances res = new PolicyInstances();
+        JsonElement data = JsonParser.parseString(POLICY_DATA).getAsJsonObject();
+        for (JsonElement id : arr) {
+            PolicyInfo i = PolicyInfo.builder() //
+                .policyId(id.getAsString()) //
+                .policyTypeId(POLICY_TYPE_1_ID) //
+                .ricId(RIC_1_ID) //
+                .policyData(data) //
+                .serviceId(SERVICE_ID) //
+                .lastModified(TIMESTAMP) //
+                .build(); //
+            res.add(i);
         }
-        return gson.toJson(policyInstances);
+        return gson.toJson(res);
     }
 }