1 package org.onap.sdnc.northbound;
3 import static org.junit.Assert.assertEquals;
4 import static org.onap.sdnc.northbound.GenericResourceApiProvider.APP_NAME;
5 import static org.onap.sdnc.northbound.GenericResourceApiProvider.NO_SERVICE_LOGIC_ACTIVE;
6 import static org.onap.sdnc.northbound.GenericResourceApiProvider.NULL_OR_EMPTY_ERROR_PARAM;
7 import static org.onap.sdnc.northbound.util.MDSALUtil.brgResponseInformation;
8 import static org.onap.sdnc.northbound.util.MDSALUtil.brgTopologyOperationInput;
9 import static org.onap.sdnc.northbound.util.MDSALUtil.brgTopologyOperationOutput;
10 import static org.onap.sdnc.northbound.util.MDSALUtil.exec;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.junit.runner.RunWith;
19 import org.mockito.runners.MockitoJUnitRunner;
20 import org.onap.sdnc.northbound.util.PropBuilder;
21 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationInput;
22 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationOutput;
23 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
24 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction;
25 import org.opendaylight.yangtools.yang.common.RpcResult;
27 @RunWith(MockitoJUnitRunner.class)
28 public class BrgTopologyOperationRPCTest extends GenericResourceApiProviderTest {
30 private static final String SVC_OPERATION = "brg-topology-operation";
34 public void setUp() throws Exception {
36 svcClient.setScvOperation(SVC_OPERATION);
40 public void should_fail_when_service_instance_id_not_present() throws Exception {
42 BrgTopologyOperationInput input =brgTopologyOperationInput().build();
43 BrgTopologyOperationOutput output =
44 exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
46 assertEquals("404", output.getResponseCode());
47 assertEquals(NULL_OR_EMPTY_ERROR_PARAM, output.getResponseMessage());
48 assertEquals("Y", output.getAckFinalIndicator());
52 public void should_fail_when_client_execution_failed() throws Exception {
54 svcClient.mockHasGraph(true);
55 svcClient.mockExecuteWoServiceData(new RuntimeException("test exception"));
57 BrgTopologyOperationInput input = brgTopologyOperationInput()
58 .setSdncRequestHeader(sdncRequestHeader()
59 .setSvcRequestId("test-svc-request-id")
60 .setSvcAction(SvcAction.Assign)
62 .setServiceInformation(serviceInformationBuilder()
63 .setServiceInstanceId("test-service-instance-id").build()).build();
65 BrgTopologyOperationOutput output =
66 exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
68 assertEquals("500", output.getResponseCode());
69 assertEquals("test exception", output.getResponseMessage());
70 assertEquals("Y", output.getAckFinalIndicator());
74 public void should_fail_when_client_has_no_graph() throws Exception {
76 svcClient.mockHasGraph(false);
78 BrgTopologyOperationInput input = brgTopologyOperationInput()
79 .setSdncRequestHeader(sdncRequestHeader()
80 .setSvcRequestId("test-svc-request-id")
81 .setSvcAction(SvcAction.Assign).build())
82 .setServiceInformation(serviceInformationBuilder()
83 .setServiceInstanceId("test-service-instance-id").build())
86 BrgTopologyOperationOutput output =
87 exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
89 assertEquals("503", output.getResponseCode());
90 assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
91 assertEquals("Y", output.getAckFinalIndicator());
95 public void should_success_when_no_errors_encountered() throws Exception {
97 svcClient.mockHasGraph(true);
98 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
99 svcResultProp.set("security-zone-object-path", "securityZoneObjectPath: XYZ");
100 svcClient.mockExecuteWoServiceData(svcResultProp);
102 BrgTopologyOperationInput input = brgTopologyOperationInput()
103 .setRequestInformation(requestInformation()
104 .setRequestId("test-request-id")
105 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build())
106 .setServiceInformation(serviceInformationBuilder()
107 .setServiceInstanceId("test-service-instance-id").build()).build();
110 BrgTopologyOperationOutput output =
111 exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
113 assertEquals("200", output.getResponseCode());
114 assertEquals("OK", output.getResponseMessage());
115 assertEquals("Y", output.getAckFinalIndicator());
117 BrgTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
118 assertEquals(expectedOutput, output);
122 private BrgTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
123 BrgTopologyOperationInput input) {
125 return brgTopologyOperationOutput()
126 .setBrgResponseInformation(brgResponseInformation()
127 .setObjectPath(propBuilder.get("brg-object-path")).build())
128 .setResponseCode(propBuilder.get(svcClient.errorCode))
129 .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal))
130 .setResponseMessage(propBuilder.get(svcClient.errorMessage))
131 .setServiceResponseInformation(serviceResponseInformation()
132 .setInstanceId(input.getServiceInformation().getServiceInstanceId())
133 .setObjectPath(propBuilder.get(svcClient.serviceObjectPath)).build())