35ffababd5d1832a68daa66e9f6a9a52bd3c6106
[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.exec;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation;
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.BrgTopologyOperationInput;
22 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationOutput;
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 BrgTopologyOperationRPCTest extends GenericResourceApiProviderTest {
29
30     private static final String SVC_OPERATION = "brg-topology-operation";
31
32
33     @Before
34     public void setUp() throws Exception {
35         super.setUp();
36         svcClient.setScvOperation(SVC_OPERATION);
37     }
38
39     @Test
40     public void should_fail_when_service_instance_id_not_present() throws Exception {
41
42         BrgTopologyOperationInput input =brgTopologyOperationInput().build();
43         BrgTopologyOperationOutput output =
44             exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
45
46         assertEquals("404", output.getResponseCode());
47         assertEquals(NULL_OR_EMPTY_ERROR_PARAM, output.getResponseMessage());
48         assertEquals("Y", output.getAckFinalIndicator());
49     }
50
51     @Test
52     public void should_fail_when_client_execution_failed() throws Exception {
53
54         svcClient.mockHasGraph(true);
55         svcClient.mockExecuteWoServiceData(new RuntimeException("test exception"));
56
57         BrgTopologyOperationInput input = brgTopologyOperationInput()
58             .setSdncRequestHeader(sdncRequestHeader()
59                     .setSvcRequestId("test-svc-request-id")
60                     .setSvcAction(SvcAction.Assign)
61                     .build())
62             .setServiceInformation(serviceInformationBuilder()
63                     .setServiceInstanceId("test-service-instance-id").build()).build();
64
65         BrgTopologyOperationOutput output =
66             exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
67
68         assertEquals("500", output.getResponseCode());
69         assertEquals("test exception", output.getResponseMessage());
70         assertEquals("Y", output.getAckFinalIndicator());
71     }
72
73     @Test
74     public void should_fail_when_client_has_no_graph() throws Exception {
75
76         svcClient.mockHasGraph(false);
77
78         BrgTopologyOperationInput input = brgTopologyOperationInput()
79             .setSdncRequestHeader(sdncRequestHeader()
80                 .setSvcRequestId("test-svc-request-id")
81                 .setSvcAction(SvcAction.Assign).build())
82             .setServiceInformation(serviceInformationBuilder()
83                 .setServiceInstanceId("test-service-instance-id").build())
84                 .build();
85
86         BrgTopologyOperationOutput output =
87             exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
88
89         assertEquals("503", output.getResponseCode());
90         assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
91         assertEquals("Y", output.getAckFinalIndicator());
92     }
93
94     @Test
95     public void should_success_when_no_errors_encountered() throws Exception {
96
97         svcClient.mockHasGraph(true);
98         PropBuilder svcResultProp = svcClient.createExecuteOKResult();
99         svcResultProp.set("security-zone-object-path", "securityZoneObjectPath: XYZ");
100         svcClient.mockExecuteWoServiceData(svcResultProp);
101
102         BrgTopologyOperationInput input = brgTopologyOperationInput()
103             .setRequestInformation(requestInformation()
104                 .setRequestId("test-request-id")
105                 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build())
106             .setServiceInformation(serviceInformationBuilder()
107                 .setServiceInstanceId("test-service-instance-id").build()).build();
108
109
110         BrgTopologyOperationOutput output =
111             exec(genericResourceApiProvider::brgTopologyOperation, input, RpcResult::getResult);
112
113         assertEquals("200", output.getResponseCode());
114         assertEquals("OK", output.getResponseMessage());
115         assertEquals("Y", output.getAckFinalIndicator());
116
117         BrgTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
118         assertEquals(expectedOutput, output);
119
120     }
121
122     private BrgTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
123         BrgTopologyOperationInput input) {
124
125         return brgTopologyOperationOutput()
126             .setBrgResponseInformation(brgResponseInformation()
127                 .setObjectPath(propBuilder.get("brg-object-path")).build())
128             .setResponseCode(propBuilder.get(svcClient.errorCode))
129             .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal))
130             .setResponseMessage(propBuilder.get(svcClient.errorMessage))
131             .setServiceResponseInformation(serviceResponseInformation()
132                 .setInstanceId(input.getServiceInformation().getServiceInstanceId())
133                 .setObjectPath(propBuilder.get(svcClient.serviceObjectPath)).build())
134                 .build();
135     }
136
137 }