GenericResourceApiProvider unit tests part 7.
[sdnc/northbound.git] / generic-resource-api / provider / src / test / java / org / onap / sdnc / northbound / BrgTopologyOperationRPCTest.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.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.build;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.exec;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder;
15 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation;
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.BrgTopologyOperationInput;
23 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationOutput;
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 BrgTopologyOperationRPCTest extends GenericResourceApiProviderTest {
30
31     private static final String SVC_OPERATION = "brg-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         BrgTopologyOperationInput input = build(brgTopologyOperationInput());
44
45         BrgTopologyOperationOutput output =
46             exec(genericResourceApiProvider::brgTopologyOperation, 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         BrgTopologyOperationInput input = build(brgTopologyOperationInput()
60             .setSdncRequestHeader(build(sdncRequestHeader()
61                 .setSvcRequestId("test-svc-request-id")
62                 .setSvcAction(SvcAction.Assign)
63             ))
64             .setServiceInformation(build(serviceInformationBuilder()
65                 .setServiceInstanceId("test-service-instance-id")
66             ))
67         );
68
69         BrgTopologyOperationOutput output =
70             exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
71
72         assertEquals("500", output.getResponseCode());
73         assertEquals("test exception", output.getResponseMessage());
74         assertEquals("Y", output.getAckFinalIndicator());
75     }
76
77     @Test
78     public void should_fail_when_client_has_no_graph() throws Exception {
79
80         svcClient.mockHasGraph(false);
81
82         BrgTopologyOperationInput input = build(brgTopologyOperationInput()
83             .setSdncRequestHeader(build(sdncRequestHeader()
84                 .setSvcRequestId("test-svc-request-id")
85                 .setSvcAction(SvcAction.Assign)
86             ))
87             .setServiceInformation(build(serviceInformationBuilder()
88                 .setServiceInstanceId("test-service-instance-id")
89             ))
90         );
91
92         BrgTopologyOperationOutput output =
93             exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
94
95         assertEquals("503", output.getResponseCode());
96         assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
97         assertEquals("Y", output.getAckFinalIndicator());
98     }
99
100     @Test
101     public void should_success_when_no_errors_encountered() throws Exception {
102
103         svcClient.mockHasGraph(true);
104         PropBuilder svcResultProp = svcClient.createExecuteOKResult();
105         svcResultProp.set("security-zone-object-path", "securityZoneObjectPath: XYZ");
106         svcClient.mockExecuteWoServiceData(svcResultProp);
107
108         BrgTopologyOperationInput input = build(brgTopologyOperationInput()
109             .setRequestInformation(build(requestInformation()
110                 .setRequestId("test-request-id")
111                 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
112             ))
113             .setServiceInformation(build(serviceInformationBuilder()
114                 .setServiceInstanceId("test-service-instance-id")
115             ))
116         );
117
118         BrgTopologyOperationOutput output =
119             exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
120
121         assertEquals("200", output.getResponseCode());
122         assertEquals("OK", output.getResponseMessage());
123         assertEquals("Y", output.getAckFinalIndicator());
124
125         BrgTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
126         assertEquals(expectedOutput, output);
127
128     }
129
130     private BrgTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
131         BrgTopologyOperationInput input) {
132
133         return build(brgTopologyOperationOutput()
134             .setBrgResponseInformation(build(brgResponseInformation()
135                 .setObjectPath(propBuilder.get("brg-object-path"))))
136             .setResponseCode(propBuilder.get(svcClient.errorCode))
137             .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal))
138             .setResponseMessage(propBuilder.get(svcClient.errorMessage))
139             .setServiceResponseInformation(build(serviceResponseInformation()
140                 .setInstanceId(input.getServiceInformation().getServiceInstanceId())
141                 .setObjectPath(propBuilder.get(svcClient.serviceObjectPath))
142             ))
143         );
144     }
145
146 }