From 85cffcf640063802689baf6abb2224f504520288 Mon Sep 17 00:00:00 2001 From: PatrikBuhr Date: Mon, 27 Jan 2020 10:48:47 +0100 Subject: [PATCH] Adapted to latest STD A1 API spec Change-Id: I5ddc558b80b054b9ae907416fc0f0e3cea95e069 Issue-ID: NONRTRIC-84 Signed-off-by: PatrikBuhr --- .../oransc/policyagent/clients/StdA1Client.java | 44 ++++++++++++---------- .../policyagent/clients/StdA1ClientTest.java | 13 ++++--- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1Client.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1Client.java index 4c1d140a..1c40308a 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1Client.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1Client.java @@ -50,31 +50,28 @@ public class StdA1Client implements A1Client { } @Override - public Mono> getPolicyTypeIdentities() { - return restClient.get("/policytypes/identities") // + public Mono> getPolicyIdentities() { + return restClient.get("/policies") // .flatMap(this::parseJsonArrayOfString); } @Override - public Mono> getPolicyIdentities() { - return restClient.get("/policies/identities") // - .flatMap(this::parseJsonArrayOfString); + public Mono putPolicy(Policy policy) { + String url = "/policies/" + policy.id() + "?policyTypeId=" + policy.type().name(); + return restClient.put(url, policy.json()) // + .flatMap(this::validateJson); } @Override - public Mono getPolicyTypeSchema(String policyTypeId) { - Mono response = restClient.get("/policytypes/" + policyTypeId); - return response.flatMap(this::createMono); + public Mono> getPolicyTypeIdentities() { + return restClient.get("/policytypes") // + .flatMap(this::parseJsonArrayOfString); } @Override - public Mono putPolicy(Policy policy) { - // TODO update when simulator is updated to include policy type - // Mono response = client.put("/policies/" + policy.id() + "?policyTypeId=" + policy.type().name(), - // policy.json()); - Mono response = restClient.put("/policies/" + policy.id(), policy.json()); - - return response.flatMap(this::createMono); + public Mono getPolicyTypeSchema(String policyTypeId) { + return restClient.get("/policytypes/" + policyTypeId) // + .flatMap(this::extractPolicySchema); } @Override @@ -113,12 +110,21 @@ public class StdA1Client implements A1Client { } } - private Mono createMono(String inputString) { + private Mono extractPolicySchema(String inputString) { try { JSONObject jsonObject = new JSONObject(inputString); - String jsonString = jsonObject.toString(); - logger.debug("A1 client: received string = {}", jsonString); - return Mono.just(jsonString); + JSONObject schemaObject = jsonObject.getJSONObject("policySchema"); + String schemaString = schemaObject.toString(); + return Mono.just(schemaString); + } catch (JSONException ex) { // invalid json + return Mono.error(ex); + } + } + + private Mono validateJson(String inputString) { + try { + new JSONObject(inputString); + return Mono.just(inputString); } catch (JSONException ex) { // invalid json return Mono.error(ex); } diff --git a/policy-agent/src/test/java/org/oransc/policyagent/clients/StdA1ClientTest.java b/policy-agent/src/test/java/org/oransc/policyagent/clients/StdA1ClientTest.java index 1454ccaf..2c83e5a8 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/clients/StdA1ClientTest.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/clients/StdA1ClientTest.java @@ -21,6 +21,7 @@ package org.oransc.policyagent.clients; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -51,8 +52,8 @@ import reactor.test.StepVerifier; @RunWith(MockitoJUnitRunner.class) public class StdA1ClientTest { private static final String RIC_URL = "RicUrl"; - private static final String POLICYTYPES_IDENTITIES_URL = "/policytypes/identities"; - private static final String POLICIES_IDENTITIES_URL = "/policies/identities"; + private static final String POLICYTYPES_IDENTITIES_URL = "/policytypes"; + private static final String POLICIES_IDENTITIES_URL = "/policies"; private static final String POLICYTYPES_URL = "/policytypes/"; private static final String POLICIES_URL = "/policies/"; @@ -98,8 +99,10 @@ public class StdA1ClientTest { @Test public void testGetValidPolicyType() { - when(asyncRestClientMock.get(POLICYTYPES_URL + POLICY_TYPE_1_NAME)) - .thenReturn(Mono.just(POLICY_TYPE_SCHEMA_VALID)); + Mono policyTypeResp = + Mono.just("{\"policySchema\": " + POLICY_TYPE_SCHEMA_VALID + ", \"statusSchema\": {} }"); + + doReturn(policyTypeResp).when(asyncRestClientMock).get(POLICYTYPES_URL + POLICY_TYPE_1_NAME); Mono policyTypeMono = a1Client.getPolicyTypeSchema(POLICY_TYPE_1_NAME); verify(asyncRestClientMock).get(POLICYTYPES_URL + POLICY_TYPE_1_NAME); @@ -123,7 +126,7 @@ public class StdA1ClientTest { Mono policyMono = a1Client.putPolicy(createPolicy(RIC_URL, POLICY_1_ID, POLICY_JSON_VALID, POLICY_TYPE)); - verify(asyncRestClientMock).put(POLICIES_URL + POLICY_1_ID, POLICY_JSON_VALID); + verify(asyncRestClientMock).put(POLICIES_URL + POLICY_1_ID + "?policyTypeId=" + POLICY_TYPE, POLICY_JSON_VALID); StepVerifier.create(policyMono).expectNext(POLICY_JSON_VALID).expectComplete().verify(); } -- 2.16.6