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.exec;
8 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
9 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
10 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnResponseInformation;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnTopologyOperationInput;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnTopologyOperationOutput;
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.TunnelxconnTopologyOperationInput;
22 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutput;
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 TunnelxconnTopologyOperationRPCTest extends GenericResourceApiProviderTest {
31 private static final String SVC_OPERATION = "tunnelxconn-topology-operation";
35 public void setUp() throws Exception {
37 svcClient.setScvOperation(SVC_OPERATION);
41 public void should_fail_when_service_instance_id_not_present() throws Exception {
43 TunnelxconnTopologyOperationInput input = tunnelxconnTopologyOperationInput().build();
45 TunnelxconnTopologyOperationOutput output =
46 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
48 assertEquals("404", output.getResponseCode());
49 assertEquals(NULL_OR_EMPTY_ERROR_PARAM, output.getResponseMessage());
50 assertEquals("Y", output.getAckFinalIndicator());
54 public void should_fail_when_client_execution_failed() throws Exception {
56 svcClient.mockHasGraph(true);
57 svcClient.mockExecuteWoServiceData(new RuntimeException("test exception"));
59 TunnelxconnTopologyOperationInput input = tunnelxconnTopologyOperationInput()
60 .setSdncRequestHeader(sdncRequestHeader()
61 .setSvcRequestId("test-svc-request-id")
62 .setSvcAction(SvcAction.Assign).build()
64 .setServiceInformation(serviceInformationBuilder()
65 .setServiceInstanceId("test-service-instance-id").build()
68 TunnelxconnTopologyOperationOutput output =
69 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
71 assertEquals("500", output.getResponseCode());
72 assertEquals("test exception", output.getResponseMessage());
73 assertEquals("Y", output.getAckFinalIndicator());
77 public void should_fail_when_client_has_no_graph() throws Exception {
79 svcClient.mockHasGraph(false);
81 TunnelxconnTopologyOperationInput input = tunnelxconnTopologyOperationInput()
82 .setSdncRequestHeader(sdncRequestHeader()
83 .setSvcRequestId("test-svc-request-id")
84 .setSvcAction(SvcAction.Assign).build()
86 .setServiceInformation(serviceInformationBuilder()
87 .setServiceInstanceId("test-service-instance-id").build()
90 TunnelxconnTopologyOperationOutput output =
91 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
93 assertEquals("503", output.getResponseCode());
94 assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
95 assertEquals("Y", output.getAckFinalIndicator());
99 public void should_success_when_no_errors_encountered() throws Exception {
101 svcClient.mockHasGraph(true);
102 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
103 svcResultProp.set("security-zone-object-path", "securityZoneObjectPath: XYZ");
104 svcClient.mockExecuteWoServiceData(svcResultProp);
106 TunnelxconnTopologyOperationInput input = tunnelxconnTopologyOperationInput()
107 .setRequestInformation(requestInformation()
108 .setRequestId("test-request-id")
109 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
111 .setServiceInformation(serviceInformationBuilder()
112 .setServiceInstanceId("test-service-instance-id").build()
115 TunnelxconnTopologyOperationOutput output =
116 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
118 assertEquals("200", output.getResponseCode());
119 assertEquals("OK", output.getResponseMessage());
120 assertEquals("Y", output.getAckFinalIndicator());
122 TunnelxconnTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
123 assertEquals(expectedOutput, output);
127 private TunnelxconnTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
128 TunnelxconnTopologyOperationInput input) {
130 return tunnelxconnTopologyOperationOutput()
131 .setTunnelxconnResponseInformation(tunnelxconnResponseInformation()
132 .setObjectPath(propBuilder.get("tunnelxconn-object-path")).build()
134 .setResponseCode(propBuilder.get(svcClient.errorCode))
135 .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal))
136 .setResponseMessage(propBuilder.get(svcClient.errorMessage))
137 .setServiceResponseInformation(serviceResponseInformation()
138 .setInstanceId(input.getServiceInformation().getServiceInstanceId())
139 .setObjectPath(propBuilder.get(svcClient.serviceObjectPath)).build()