GenericResourceApiProvider unit tests part 7.
[sdnc/northbound.git] / generic-resource-api / provider / src / test / java / org / onap / sdnc / northbound / TunnelxconnTopologyOperationRPCTest.java
1 package org.onap.sdnc.northbound;
2
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;
16
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;
27
28 @RunWith(MockitoJUnitRunner.class)
29 public class TunnelxconnTopologyOperationRPCTest extends GenericResourceApiProviderTest {
30
31
32     private static final String SVC_OPERATION = "tunnelxconn-topology-operation";
33
34
35     @Before
36     public void setUp() throws Exception {
37         super.setUp();
38         svcClient.setScvOperation(SVC_OPERATION);
39     }
40
41     @Test
42     public void should_fail_when_service_instance_id_not_present() throws Exception {
43
44         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput());
45
46         TunnelxconnTopologyOperationOutput output =
47             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
48
49         assertEquals("404", output.getResponseCode());
50         assertEquals(NULL_OR_EMPTY_ERROR_PARAM, output.getResponseMessage());
51         assertEquals("Y", output.getAckFinalIndicator());
52     }
53
54     @Test
55     public void should_fail_when_client_execution_failed() throws Exception {
56
57         svcClient.mockHasGraph(true);
58         svcClient.mockExecuteWoServiceData(new RuntimeException("test exception"));
59
60         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
61             .setSdncRequestHeader(build(sdncRequestHeader()
62                 .setSvcRequestId("test-svc-request-id")
63                 .setSvcAction(SvcAction.Assign)
64             ))
65             .setServiceInformation(build(serviceInformationBuilder()
66                 .setServiceInstanceId("test-service-instance-id")
67             ))
68         );
69
70         TunnelxconnTopologyOperationOutput output =
71             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
72
73         assertEquals("500", output.getResponseCode());
74         assertEquals("test exception", output.getResponseMessage());
75         assertEquals("Y", output.getAckFinalIndicator());
76     }
77
78     @Test
79     public void should_fail_when_client_has_no_graph() throws Exception {
80
81         svcClient.mockHasGraph(false);
82
83         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
84             .setSdncRequestHeader(build(sdncRequestHeader()
85                 .setSvcRequestId("test-svc-request-id")
86                 .setSvcAction(SvcAction.Assign)
87             ))
88             .setServiceInformation(build(serviceInformationBuilder()
89                 .setServiceInstanceId("test-service-instance-id")
90             ))
91         );
92
93         TunnelxconnTopologyOperationOutput output =
94             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
95
96         assertEquals("503", output.getResponseCode());
97         assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
98         assertEquals("Y", output.getAckFinalIndicator());
99     }
100
101     @Test
102     public void should_success_when_no_errors_encountered() throws Exception {
103
104         svcClient.mockHasGraph(true);
105         PropBuilder svcResultProp = svcClient.createExecuteOKResult();
106         svcResultProp.set("security-zone-object-path", "securityZoneObjectPath: XYZ");
107         svcClient.mockExecuteWoServiceData(svcResultProp);
108
109         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
110             .setRequestInformation(build(requestInformation()
111                 .setRequestId("test-request-id")
112                 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
113             ))
114             .setServiceInformation(build(serviceInformationBuilder()
115                 .setServiceInstanceId("test-service-instance-id")
116             ))
117         );
118
119         TunnelxconnTopologyOperationOutput output =
120             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
121
122         assertEquals("200", output.getResponseCode());
123         assertEquals("OK", output.getResponseMessage());
124         assertEquals("Y", output.getAckFinalIndicator());
125
126         TunnelxconnTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
127         assertEquals(expectedOutput, output);
128
129     }
130
131     private TunnelxconnTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
132         TunnelxconnTopologyOperationInput input) {
133
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))
143             ))
144         );
145     }
146 }