Update baseUrl of pms_v2.0
[portal/nonrtric-controlpanel.git] / webapp-backend / src / test / java / org / oransc / portal / nonrtric / controlpanel / policyagentapi / PolicyAgentApiImplTest.java
index b376c3b..1d84de4 100644 (file)
@@ -24,299 +24,294 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
-import com.google.gson.reflect.TypeToken;
 
-import java.lang.reflect.Type;
-import java.util.ArrayList;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 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.model.PolicyType;
-import org.oransc.portal.nonrtric.controlpanel.model.PolicyTypes;
-import org.oransc.portal.nonrtric.controlpanel.policyagentapi.PolicyAgentApiImpl;
-import org.oransc.portal.nonrtric.controlpanel.policyagentapi.PolicyAgentApiImpl.RicInfo;
-import org.oransc.portal.nonrtric.controlpanel.model.ImmutablePolicyInfo;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
+import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient;
 import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestClientException;
-import org.springframework.web.client.RestTemplate;
-
-public class PolicyAgentApiImplTest {
-    private static final String URL_PREFIX = "UrlPrefix";
-    private static final String URL_POLICY_SCHEMAS = "/policy_schemas";
-    private static final String URL_POLICY_INSTANCES = "/policies?type={type}";
-    private static final String URL_POLICY_INSTANCE = "/policy?id={id}";
-    private static final String URL_PUT_POLICY = "/policy?type={type}&id={id}&ric={ric}&service={service}";
-    private static final String URL_DELETE_POLICY = "/policy?id={id}";
-    private static final String URL_RIC_INFO = "/rics?policyType={typeName}";
+import org.springframework.web.client.HttpServerErrorException;
+import reactor.core.publisher.Mono;
+
+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 = "{\"name\":\"ric1\",\"policyTypes\":[\"type1\"]}";
-    private static final String RIC_1_INFO_INVALID = "{\"name\":\"ric1\",\"policyTypes\":\"type1\"]}";
-    private static final String CLIENT_ERROR_MESSAGE = "Exception: Client returned failure";
-
+    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(); //
 
     PolicyAgentApiImpl apiUnderTest;
 
-    RestTemplate restTemplateMock;
+    AsyncRestClient restClient;
 
     @BeforeEach
-    public void init() {
-        restTemplateMock = mock(RestTemplate.class);
-        apiUnderTest = new PolicyAgentApiImpl(URL_PREFIX, restTemplateMock);
+    void init() {
+        restClient = mock(AsyncRestClient.class);
+        apiUnderTest = new PolicyAgentApiImpl(restClient);
     }
 
-    @Test
-    public void testGetAllPolicyTypesFailure() {
-        ResponseEntity<String> getAllPolicyTypesResp = new ResponseEntity<>(null, HttpStatus.NOT_FOUND);
-        when(restTemplateMock.getForEntity(eq(URL_PREFIX + URL_POLICY_SCHEMAS), eq(String.class)))
-            .thenReturn(getAllPolicyTypesResp);
-
-        ResponseEntity<String> returnedResp = apiUnderTest.getAllPolicyTypes();
+    private void whenGetReturnOK(String url, HttpStatus status, String body) {
+        ResponseEntity<String> ret = new ResponseEntity<>(body, status);
+        when(restClient.getForEntity(eq(url))).thenReturn(Mono.just(ret));
+    }
 
-        verify(restTemplateMock).getForEntity(URL_PREFIX + URL_POLICY_SCHEMAS, String.class);
-        assertNull(returnedResp.getBody());
-        assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
+    private void whenGetReturnFailure(String url, HttpStatus status, String body) {
+        HttpServerErrorException e = new HttpServerErrorException(status, body);
+        when(restClient.getForEntity(eq(url))).thenReturn(Mono.error(e));
     }
 
     @Test
-    public void testGetAllPolicyTypesSuccessValidJson() {
-        String policyTypes = Arrays.asList(POLICY_TYPE_1_VALID, POLICY_TYPE_2_VALID).toString();
-        String policyTypesJson = parsePolicyTypesJson(policyTypes);
-        ResponseEntity<String> getAllPolicyTypesResp = new ResponseEntity<>(policyTypes, HttpStatus.OK);
-        when(restTemplateMock.getForEntity(eq(URL_PREFIX + URL_POLICY_SCHEMAS), eq(String.class)))
-            .thenReturn(getAllPolicyTypesResp);
-
+    void testGetAllPolicyTypesFailure() {
+        whenGetReturnFailure(URL_POLICY_SCHEMAS, HttpStatus.NOT_FOUND, "");
         ResponseEntity<String> returnedResp = apiUnderTest.getAllPolicyTypes();
+        assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
+    }
 
-        verify(restTemplateMock).getForEntity(URL_PREFIX + URL_POLICY_SCHEMAS, String.class);
-        assertEquals(returnedResp.getBody(), policyTypesJson);
-        assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
+    @Test
+    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\""));
+        assertEquals(HttpStatus.OK, resp.getStatusCode());
     }
 
     @Test
-    public void testGetAllPolicyTypesSuccessInvalidJson() {
+    void testGetAllPolicyTypesSuccessInvalidJson() {
         String policyTypes = Arrays.asList(POLICY_TYPE_1_INVALID, POLICY_TYPE_2_VALID).toString();
-        ResponseEntity<String> getAllPolicyTypesResp = new ResponseEntity<>(policyTypes, HttpStatus.OK);
-        when(restTemplateMock.getForEntity(eq(URL_PREFIX + URL_POLICY_SCHEMAS), eq(String.class)))
-            .thenReturn(getAllPolicyTypesResp);
+        whenGetReturnOK(URL_POLICY_SCHEMAS, HttpStatus.OK, policyTypes);
 
         ResponseEntity<String> returnedResp = apiUnderTest.getAllPolicyTypes();
 
-        verify(restTemplateMock).getForEntity(URL_PREFIX + URL_POLICY_SCHEMAS, String.class);
         assertTrue(returnedResp.getBody().contains("Exception"));
         assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
     }
 
+    private String urlPolicyInstances(String type) {
+        return "/a1-policy/v2/policies?policytype_id=" + type;
+    }
+
     @Test
-    public void testGetPolicyInstancesForTypeFailure() {
-        ResponseEntity<String> getPolicyInstancesForTypeResp = new ResponseEntity<>(null, HttpStatus.NOT_FOUND);
-        Map<String, ?> uriVariables = Map.of("type", POLICY_TYPE_1_ID);
-        when(restTemplateMock.getForEntity(eq(URL_PREFIX + URL_POLICY_INSTANCES), eq(String.class), eq(uriVariables)))
-            .thenReturn(getPolicyInstancesForTypeResp);
+    void testGetPolicyInstancesForTypeFailure() {
+        whenGetReturnFailure(urlPolicyInstances(POLICY_TYPE_1_ID), HttpStatus.NOT_FOUND, "");
 
         ResponseEntity<String> returnedResp = apiUnderTest.getPolicyInstancesForType(POLICY_TYPE_1_ID);
 
-        verify(restTemplateMock).getForEntity(URL_PREFIX + URL_POLICY_INSTANCES, String.class, uriVariables);
-        assertNull(returnedResp.getBody());
         assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
     }
 
     @Test
-    public void testGetPolicyInstancesForTypeSuccessValidJson() {
-        String policyInstances = Arrays.asList(POLICY_1_VALID).toString();
-        String policyInstancesJson = parsePolicyInstancesJson(policyInstances);
-        ResponseEntity<String> getPolicyInstancesForTypeResp = new ResponseEntity<>(policyInstances, HttpStatus.OK);
-        Map<String, ?> uriVariables = Map.of("type", POLICY_TYPE_1_ID);
-        when(restTemplateMock.getForEntity(eq(URL_PREFIX + URL_POLICY_INSTANCES), eq(String.class), eq(uriVariables)))
-            .thenReturn(getPolicyInstancesForTypeResp);
+    void testGetPolicyInstancesForTypeSuccessValidJson() {
+        String policyInstances = "{\"policy_ids\":[\"policy1\"]}";
+        String policyInstancesJson = parsePolicyInstancesJson("[\"policy1\"]");
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getPolicyInstancesForType(POLICY_TYPE_1_ID);
+        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);
 
-        verify(restTemplateMock).getForEntity(URL_PREFIX + URL_POLICY_INSTANCES, String.class, uriVariables);
+        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();
-        ResponseEntity<String> getPolicyInstancesForTypeResp = new ResponseEntity<>(policyInstances, HttpStatus.OK);
-        Map<String, ?> uriVariables = Map.of("type", POLICY_TYPE_1_ID);
-        when(restTemplateMock.getForEntity(eq(URL_PREFIX + URL_POLICY_INSTANCES), eq(String.class), eq(uriVariables)))
-            .thenReturn(getPolicyInstancesForTypeResp);
+
+        whenGetReturnOK(urlPolicyInstances(POLICY_TYPE_1_ID), HttpStatus.OK, policyInstances);
 
         ResponseEntity<String> returnedResp = apiUnderTest.getPolicyInstancesForType(POLICY_TYPE_1_ID);
 
-        verify(restTemplateMock).getForEntity(URL_PREFIX + URL_POLICY_INSTANCES, String.class, uriVariables);
         assertTrue(returnedResp.getBody().contains("Exception"));
         assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
     }
 
+    private String urlPolicyInstance(String id) {
+        return "/a1-policy/v2/policies/" + id;
+    }
+
+    private String urlPolicyStatus(String id) {
+        return "/a1-policy/v2/policies/" + id + "/status";
+    }
+
     @Test
-    public void testGetPolicyInstance() {
-        ResponseEntity<Object> getPolicyInstanceResp = new ResponseEntity<>(POLICY_1_VALID, HttpStatus.OK);
-        Map<String, ?> uriVariables = Map.of("id", POLICY_1_ID);
-        when(restTemplateMock.getForEntity(eq(URL_PREFIX + URL_POLICY_INSTANCE), eq(Object.class), eq(uriVariables)))
-            .thenReturn(getPolicyInstanceResp);
+    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);
 
-        verify(restTemplateMock).getForEntity(URL_PREFIX + URL_POLICY_INSTANCE, Object.class, uriVariables);
-        assertEquals(POLICY_1_VALID, returnedResp.getBody());
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
+        assertEquals(POLICY_DATA, gson.toJson(returnedResp.getBody()));
+    }
+
+    private String urlPutPolicy() {
+        return "/a1-policy/v2/policies/";
+    }
+
+    private void whenPutReturnOK(String url, String putBody, HttpStatus status, String body) {
+        ResponseEntity<String> ret = new ResponseEntity<>(body, status);
+        when(restClient.putForEntity(eq(url), eq(putBody))).thenReturn(Mono.just(ret));
+    }
+
+    private void whenPutReturnFailure(String url, String putBody, HttpStatus status, String body) {
+        HttpServerErrorException e =
+            new HttpServerErrorException(status, body, body.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
+        when(restClient.putForEntity(eq(url), eq(putBody))).thenReturn(Mono.error(e));
     }
 
     @Test
-    public void testPutPolicyFailure() {
-        HttpEntity<Object> jsonHttpEntity = createJsonHttpEntity(POLICY_1_VALID);
-        Map<String, ?> uriVariables = Map.of( //
-            "type", POLICY_TYPE_1_ID, //
-            "id", POLICY_1_ID, //
-            "ric", RIC_1_ID, //
-            "service", "controlpanel");
-        doThrow(new RestClientException(CLIENT_ERROR_MESSAGE)).when(restTemplateMock)
-            .put(eq(URL_PREFIX + URL_PUT_POLICY), eq(jsonHttpEntity), eq(uriVariables));
+    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);
 
-        verify(restTemplateMock).put(URL_PREFIX + URL_PUT_POLICY, jsonHttpEntity, uriVariables);
-        assertTrue(returnedResp.getBody().contains("Exception"));
-        assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
+        assertTrue(returnedResp.getBody().contains(CLIENT_ERROR_MESSAGE));
+        assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
     }
 
     @Test
-    public void testPutPolicySuccess() {
-        HttpEntity<Object> jsonHttpEntity = createJsonHttpEntity(POLICY_1_VALID);
-        Map<String, ?> uriVariables = Map.of( //
-            "type", POLICY_TYPE_1_ID, //
-            "id", POLICY_1_ID, //
-            "ric", RIC_1_ID, //
-            "service", "controlpanel");
+    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);
-
-        verify(restTemplateMock).put(URL_PREFIX + URL_PUT_POLICY, jsonHttpEntity, uriVariables);
+            apiUnderTest.putPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, POLICY_DATA, RIC_1_ID);
         assertNull(returnedResp.getBody());
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
     }
 
+    private void whenDeleteReturnOK(String url, HttpStatus status) {
+        ResponseEntity<String> ret = new ResponseEntity<>(status);
+        when(restClient.deleteForEntity(eq(url))).thenReturn(Mono.just(ret));
+    }
+
+    private void whenDeleteReturnFailure(String url, HttpStatus status, String body) {
+        HttpServerErrorException e =
+            new HttpServerErrorException(status, body, body.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
+        when(restClient.deleteForEntity(eq(url))).thenReturn(Mono.error(e));
+    }
+
+    private String deletePolicyUrl(String id) {
+        return "/a1-policy/v2/policies/" + id;
+    }
+
     @Test
-    public void testDeletePolicyFailure() {
-        Map<String, ?> uriVariables = Map.of("id", POLICY_1_ID);
-        doThrow(new RestClientException(CLIENT_ERROR_MESSAGE)).when(restTemplateMock)
-            .delete(eq(URL_PREFIX + URL_DELETE_POLICY), eq(uriVariables));
+    void testDeletePolicyFailure() {
+        whenDeleteReturnFailure(deletePolicyUrl(POLICY_1_ID), HttpStatus.NOT_FOUND, CLIENT_ERROR_MESSAGE);
 
         ResponseEntity<String> returnedResp = apiUnderTest.deletePolicy(POLICY_1_ID);
 
-        verify(restTemplateMock).delete(URL_PREFIX + URL_DELETE_POLICY, uriVariables);
-        assertTrue(returnedResp.getBody().contains("Exception"));
+        assertTrue(returnedResp.getBody().contains(CLIENT_ERROR_MESSAGE));
         assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
     }
 
     @Test
-    public void testDeletePolicySuccess() {
-        Map<String, ?> uriVariables = Map.of("id", POLICY_1_ID);
-
+    void testDeletePolicySuccess() {
+        whenDeleteReturnOK(deletePolicyUrl(POLICY_1_ID), HttpStatus.OK);
         ResponseEntity<String> returnedResp = apiUnderTest.deletePolicy(POLICY_1_ID);
 
-        verify(restTemplateMock).delete(URL_PREFIX + URL_DELETE_POLICY, uriVariables);
-        assertNull(returnedResp.getBody());
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
     }
 
+    private String urlRicInfo(String typeName) {
+        return "/a1-policy/v2/rics?policytype_id=" + typeName;
+    }
+
     @Test
-    public void testGetRicsSupportingTypeValidJson() {
+    void testGetRicsSupportingTypeValidJson() {
         String rics = Arrays.asList(RIC_1_INFO_VALID).toString();
-        String ricsJson = parseRicsJson(rics);
-        Map<String, ?> uriVariables = Map.of("typeName", POLICY_TYPE_1_ID);
-        when(restTemplateMock.getForObject(eq(URL_PREFIX + URL_RIC_INFO), eq(String.class), eq(uriVariables)))
-            .thenReturn(rics);
+        String returnVal = "{\"rics\":" + rics + "}";
+        this.whenGetReturnOK(urlRicInfo(POLICY_TYPE_1_ID), HttpStatus.OK, returnVal);
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getRicsSupportingType(POLICY_TYPE_1_ID);
+        ResponseEntity<String> resp = apiUnderTest.getRicsSupportingType(POLICY_TYPE_1_ID);
 
-        verify(restTemplateMock).getForObject(URL_PREFIX + URL_RIC_INFO, String.class, uriVariables);
-        assertEquals(returnedResp.getBody(), ricsJson);
-        assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
+        assertEquals(HttpStatus.OK, resp.getStatusCode());
+        assertEquals("[\"ric1\"]", resp.getBody());
     }
 
     @Test
-    public void testGetRicsSupportingTypeInvalidJson() {
+    void testGetRicsSupportingTypeInvalidJson() {
         String rics = Arrays.asList(RIC_1_INFO_INVALID).toString();
-        Map<String, ?> uriVariables = Map.of("typeName", POLICY_TYPE_1_ID);
-        when(restTemplateMock.getForObject(eq(URL_PREFIX + URL_RIC_INFO), eq(String.class), eq(uriVariables)))
-            .thenReturn(rics);
+
+        this.whenGetReturnOK(urlRicInfo(POLICY_TYPE_1_ID), HttpStatus.OK, rics);
 
         ResponseEntity<String> returnedResp = apiUnderTest.getRicsSupportingType(POLICY_TYPE_1_ID);
 
-        verify(restTemplateMock).getForObject(URL_PREFIX + URL_RIC_INFO, String.class, uriVariables);
         assertTrue(returnedResp.getBody().contains("Exception"));
         assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
     }
 
-    private String parsePolicyTypesJson(String inputString) {
-        PolicyTypes policyTypes = new PolicyTypes();
-        JsonArray schemas = JsonParser.parseString(inputString).getAsJsonArray();
-        for (JsonElement schema : schemas) {
-            JsonObject schemaObj = schema.getAsJsonObject();
-            policyTypes.add(new PolicyType(schemaObj.get("title").getAsString(), schemaObj.toString()));
-        }
-        return gson.toJson(policyTypes);
-    }
-
     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);
-        }
-        return gson.toJson(policyInstances);
-    }
-
-    private String parseRicsJson(String inputString) {
-        Type listType = new TypeToken<List<ImmutableRicInfo>>() {}.getType();
-        List<RicInfo> rspParsed = gson.fromJson(inputString, listType);
-        Collection<String> rics = new ArrayList<>(rspParsed.size());
-        for (RicInfo ric : rspParsed) {
-            rics.add(ric.ricName());
+        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(rics);
-    }
-
-    private HttpEntity<Object> createJsonHttpEntity(Object content) {
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_JSON);
-        return new HttpEntity<>(content, headers);
+        return gson.toJson(res);
     }
 }