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.build;
8 import static org.onap.sdnc.northbound.util.MDSALUtil.exec;
9 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
10 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnResponseInformation;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnTopologyOperationInput;
15 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnTopologyOperationOutput;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.junit.runner.RunWith;
20 import org.mockito.runners.MockitoJUnitRunner;
21 import org.onap.sdnc.northbound.util.PropBuilder;
22 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationInput;
23 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutput;
24 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
25 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction;
26 import org.opendaylight.yangtools.yang.common.RpcResult;
28 @RunWith(MockitoJUnitRunner.class)
29 public class TunnelxconnTopologyOperationRPCTest extends GenericResourceApiProviderTest {
32 private static final String SVC_OPERATION = "tunnelxconn-topology-operation";
36 public void setUp() throws Exception {
38 svcClient.setScvOperation(SVC_OPERATION);
42 public void should_fail_when_service_instance_id_not_present() throws Exception {
44 TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput());
46 TunnelxconnTopologyOperationOutput output =
47 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
49 assertEquals("404", output.getResponseCode());
50 assertEquals(NULL_OR_EMPTY_ERROR_PARAM, output.getResponseMessage());
51 assertEquals("Y", output.getAckFinalIndicator());
55 public void should_fail_when_client_execution_failed() throws Exception {
57 svcClient.mockHasGraph(true);
58 svcClient.mockExecuteWoServiceData(new RuntimeException("test exception"));
60 TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
61 .setSdncRequestHeader(build(sdncRequestHeader()
62 .setSvcRequestId("test-svc-request-id")
63 .setSvcAction(SvcAction.Assign)
65 .setServiceInformation(build(serviceInformationBuilder()
66 .setServiceInstanceId("test-service-instance-id")
70 TunnelxconnTopologyOperationOutput output =
71 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
73 assertEquals("500", output.getResponseCode());
74 assertEquals("test exception", output.getResponseMessage());
75 assertEquals("Y", output.getAckFinalIndicator());
79 public void should_fail_when_client_has_no_graph() throws Exception {
81 svcClient.mockHasGraph(false);
83 TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
84 .setSdncRequestHeader(build(sdncRequestHeader()
85 .setSvcRequestId("test-svc-request-id")
86 .setSvcAction(SvcAction.Assign)
88 .setServiceInformation(build(serviceInformationBuilder()
89 .setServiceInstanceId("test-service-instance-id")
93 TunnelxconnTopologyOperationOutput output =
94 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
96 assertEquals("503", output.getResponseCode());
97 assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
98 assertEquals("Y", output.getAckFinalIndicator());
102 public void should_success_when_no_errors_encountered() throws Exception {
104 svcClient.mockHasGraph(true);
105 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
106 svcResultProp.set("security-zone-object-path", "securityZoneObjectPath: XYZ");
107 svcClient.mockExecuteWoServiceData(svcResultProp);
109 TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
110 .setRequestInformation(build(requestInformation()
111 .setRequestId("test-request-id")
112 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
114 .setServiceInformation(build(serviceInformationBuilder()
115 .setServiceInstanceId("test-service-instance-id")
119 TunnelxconnTopologyOperationOutput output =
120 exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
122 assertEquals("200", output.getResponseCode());
123 assertEquals("OK", output.getResponseMessage());
124 assertEquals("Y", output.getAckFinalIndicator());
126 TunnelxconnTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
127 assertEquals(expectedOutput, output);
131 private TunnelxconnTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
132 TunnelxconnTopologyOperationInput input) {
134 return build(tunnelxconnTopologyOperationOutput()
135 .setTunnelxconnResponseInformation(build(tunnelxconnResponseInformation()
136 .setObjectPath(propBuilder.get("tunnelxconn-object-path"))))
137 .setResponseCode(propBuilder.get(svcClient.errorCode))
138 .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal))
139 .setResponseMessage(propBuilder.get(svcClient.errorMessage))
140 .setServiceResponseInformation(build(serviceResponseInformation()
141 .setInstanceId(input.getServiceInformation().getServiceInstanceId())
142 .setObjectPath(propBuilder.get(svcClient.serviceObjectPath))