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