import static org.mockito.Mockito.when;
import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.nio.file.Files;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.stubbing.OngoingStubbing;
import org.oransc.policyagent.clients.A1Client.A1ProtocolType;
+import org.oransc.policyagent.clients.SdncOscA1Client.AdapterOutput;
import org.oransc.policyagent.clients.SdncOscA1Client.AdapterRequest;
-import org.oransc.policyagent.clients.SdncOscA1Client.AdapterResponse;
import org.oransc.policyagent.configuration.ControllerConfig;
import org.oransc.policyagent.configuration.ImmutableControllerConfig;
import org.oransc.policyagent.repository.Policy;
assertEquals(POLICY_TYPE_1_ID, policyTypeIds.get(0), "");
String expUrl = RIC_1_URL + "/a1-p/policytypes";
- AdapterRequest expectedParams = ImmutableAdapterRequest.builder() //
+ ImmutableAdapterRequest expectedParams = ImmutableAdapterRequest.builder() //
.nearRtRicUrl(expUrl) //
.build();
String expInput = SdncJsonHelper.createInputJsonString(expectedParams);
verify(asyncRestClientMock).postWithAuthHeader(GET_A1_POLICY_URL, expInput, CONTROLLER_USERNAME,
CONTROLLER_PASSWORD);
+ }
+
+ private String loadFile(String fileName) throws IOException {
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ URL url = loader.getResource(fileName);
+ File file = new File(url.getFile());
+ return new String(Files.readAllBytes(file.toPath()));
+ }
+
+ @Test
+ public void testGetTypeSchema_OSC() throws IOException {
+ clientUnderTest = new SdncOscA1Client(A1ProtocolType.SDNC_OSC_OSC_V1, //
+ A1ClientHelper.createRic(RIC_1_URL).getConfig(), //
+ controllerConfig(), asyncRestClientMock);
+
+ String ricResponse = loadFile("test_osc_get_schema_response.json");
+ JsonElement elem = gson().fromJson(ricResponse, JsonElement.class);
+ String responseFromController = createResponse(elem);
+ whenAsyncPostThenReturn(Mono.just(responseFromController));
+ String response = clientUnderTest.getPolicyTypeSchema("policyTypeId").block();
+ JsonElement respJson = gson().fromJson(response, JsonElement.class);
+ assertEquals("policyTypeId", respJson.getAsJsonObject().get("title").getAsString(),
+ "title should be updated to contain policyType ID");
}
private String policiesUrl() {
return SdncOscA1Client.gson;
}
- private String createResponse(Object obj) {
- AdapterResponse output = ImmutableAdapterResponse.builder() //
- .body(gson().toJson(obj)) //
+ private String createResponse(Object body) {
+ AdapterOutput output = ImmutableAdapterOutput.builder() //
+ .body(gson().toJson(body)) //
.httpStatus(200) //
.build();
-
- return gson().toJson(output);
+ return SdncJsonHelper.createOutputJsonString(output);
}
@Test
List<String> returned = clientUnderTest.getPolicyIdentities().block();
assertEquals(2, returned.size(), "");
- AdapterRequest expectedParams = ImmutableAdapterRequest.builder() //
+ ImmutableAdapterRequest expectedParams = ImmutableAdapterRequest.builder() //
.nearRtRicUrl(policiesUrl()) //
.build();
String expInput = SdncJsonHelper.createInputJsonString(expectedParams);
@Test
public void testPutPolicyRejected() {
final String policyJson = "{}";
- AdapterResponse adapterResponse = ImmutableAdapterResponse.builder() //
+ AdapterOutput adapterOutput = ImmutableAdapterOutput.builder() //
.body("NOK") //
.httpStatus(400) // ERROR
.build();
- String resp = gson().toJson(adapterResponse);
+ String resp = SdncJsonHelper.createOutputJsonString(adapterOutput);
whenAsyncPostThenReturn(Mono.just(resp));
Mono<String> returnedMono = clientUnderTest
.putPolicy(A1ClientHelper.createPolicy(RIC_1_URL, POLICY_1_ID, policyJson, POLICY_TYPE_1_ID));
+ StepVerifier.create(returnedMono) //
+ .expectSubscription() //
+ .expectErrorMatches(t -> t instanceof WebClientResponseException) //
+ .verify();
final String expUrl = policiesUrl() + "/" + POLICY_1_ID;
AdapterRequest expRequestParams = ImmutableAdapterRequest.builder() //
whenPostReturnOkResponse();
A1ProtocolType returnedVersion = clientUnderTest.getProtocolVersion().block();
assertEquals(A1ProtocolType.SDNC_OSC_STD_V1_1, returnedVersion, "");
+
+ whenPostReturnOkResponseNoBody();
+ returnedVersion = clientUnderTest.getProtocolVersion().block();
+ assertEquals(A1ProtocolType.SDNC_OSC_STD_V1_1, returnedVersion, "");
}
private void whenPostReturnOkResponse() {
- AdapterResponse adapterResponse = ImmutableAdapterResponse.builder() //
+ AdapterOutput adapterOutput = ImmutableAdapterOutput.builder() //
.body("OK") //
.httpStatus(200) //
.build();
- String resp = gson().toJson(adapterResponse);
+ String resp = SdncJsonHelper.createOutputJsonString(adapterOutput);
+ whenAsyncPostThenReturn(Mono.just(resp));
+ }
+
+ private void whenPostReturnOkResponseNoBody() {
+ AdapterOutput adapterOutput = ImmutableAdapterOutput.builder() //
+ .httpStatus(200) //
+ .body(Optional.empty()) //
+ .build();
+
+ String resp = SdncJsonHelper.createOutputJsonString(adapterOutput);
whenAsyncPostThenReturn(Mono.just(resp));
}