Add Http Response Code in A1 Controller Api
[nonrtric.git] / sdnc-a1-controller / northbound / nonrt-ric-api / provider / src / test / java / org / onap / sdnc / northbound / NonrtRicApiProviderTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.sdnc.northbound;
22
23 import static org.mockito.Matchers.anyObject;
24 import static org.mockito.Matchers.eq;
25 import static org.mockito.Mockito.when;
26 import com.google.common.util.concurrent.ListenableFuture;
27 import com.google.gson.Gson;
28 import java.util.ArrayList;
29 import java.util.List;
30 import java.util.concurrent.ExecutionException;
31 import org.junit.Assert;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.Mock;
36 import org.mockito.internal.util.reflection.Whitebox;
37 import org.mockito.runners.MockitoJUnitRunner;
38 import org.onap.sdnc.northbound.provider.NonrtRicApiProvider;
39 import org.onap.sdnc.northbound.restadpter.NearRicUrlProvider;
40 import org.onap.sdnc.northbound.restadpter.RestAdapter;
41 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
42 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
43 import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest;
44 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
45 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyInstanceInputBuilder;
46 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyInstanceOutput;
47 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyTypeInputBuilder;
48 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyTypeOutput;
49 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyInstanceInputBuilder;
50 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyInstanceOutput;
51 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyTypeInputBuilder;
52 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyTypeOutput;
53 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetHealthCheckInputBuilder;
54 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetHealthCheckOutput;
55 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetNearRTRICsInputBuilder;
56 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetNearRTRICsOutput;
57 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyInstanceInputBuilder;
58 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyInstanceOutput;
59 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyInstancesInputBuilder;
60 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyInstancesOutput;
61 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyTypeInputBuilder;
62 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyTypeOutput;
63 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyTypesInputBuilder;
64 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyTypesOutput;
65 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetStatusInputBuilder;
66 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetStatusOutput;
67 import org.opendaylight.yangtools.yang.common.RpcResult;
68 import org.slf4j.Logger;
69 import org.slf4j.LoggerFactory;
70 import org.springframework.http.HttpStatus;
71 import org.springframework.http.ResponseEntity;
72
73 /**
74  * This class Tests all the methods in NonrtRicApiProvider
75  *
76  * @author lathishbabu.ganesan@est.tech
77  *
78  */
79
80 @RunWith(MockitoJUnitRunner.class)
81 public class NonrtRicApiProviderTest extends AbstractConcurrentDataBrokerTest {
82
83   protected static final Logger LOG = LoggerFactory.getLogger(NonrtRicApiProviderTest.class);
84   protected NonrtRicApiProvider nonrtRicApiProvider;
85   protected DataBroker dataBroker;
86   @Mock
87   protected NotificationPublishService mockNotificationPublishService;
88   @Mock
89   protected RpcProviderRegistry mockRpcProviderRegistry;
90   @Mock
91   private RestAdapter restAdapter;
92   private NearRicUrlProvider nearRicUrlProvider;
93   private static String nearRtRicId = "NearRtRic1";
94   private static Long policyTypeId = 11L;
95   private static String policyTypeInstanceId = "12";
96
97
98   @Before
99   public void setUp() throws Exception {
100     nearRicUrlProvider = new NearRicUrlProvider();
101     dataBroker = getDataBroker();
102     nonrtRicApiProvider = new NonrtRicApiProvider(dataBroker, mockNotificationPublishService,
103         mockRpcProviderRegistry);
104   }
105
106   @Test
107   public void testCreatePolicyInstance() throws InterruptedException, ExecutionException {
108     CreatePolicyInstanceInputBuilder inputBuilder = new CreatePolicyInstanceInputBuilder();
109     inputBuilder.setNearRtRicId(nearRtRicId);
110     inputBuilder.setPolicyTypeId(policyTypeId);
111     inputBuilder.setPolicyInstanceId(policyTypeInstanceId);
112     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
113     String uri = nearRicUrlProvider.getPolicyInstanceId(inputBuilder.build().getNearRtRicId(),
114             String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
115     ResponseEntity<Object> createPolicyInstanceResponse = new ResponseEntity<>(HttpStatus.CREATED);
116     when(restAdapter.put(eq(uri), anyObject())).thenReturn(createPolicyInstanceResponse);
117     ListenableFuture<RpcResult<CreatePolicyInstanceOutput>> result =
118         nonrtRicApiProvider.createPolicyInstance(inputBuilder.build());
119     Assert.assertEquals(String.valueOf(HttpStatus.CREATED.value()), result.get().getResult().getCode());
120   }
121
122   @Test
123   public void testDeletePolicyInstance() throws InterruptedException, ExecutionException {
124     DeletePolicyInstanceInputBuilder inputBuilder = new DeletePolicyInstanceInputBuilder();
125     inputBuilder.setNearRtRicId(nearRtRicId);
126     inputBuilder.setPolicyTypeId(policyTypeId);
127     inputBuilder.setPolicyInstanceId(policyTypeInstanceId);
128     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
129     String uri = nearRicUrlProvider.getPolicyInstanceId(inputBuilder.build().getNearRtRicId(),
130             String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
131     ResponseEntity<Object> deletePolicyInstanceResponse = new ResponseEntity<>(HttpStatus.NO_CONTENT);
132     when(restAdapter.delete(eq(uri))).thenReturn(deletePolicyInstanceResponse);
133     ListenableFuture<RpcResult<DeletePolicyInstanceOutput>> result =
134         nonrtRicApiProvider.deletePolicyInstance(inputBuilder.build());
135     Assert.assertEquals(String.valueOf(HttpStatus.NO_CONTENT.value()), result.get().getResult().getCode());
136   }
137
138   @Test
139   public void testGetNearRTRICs() throws InterruptedException, ExecutionException {
140     GetNearRTRICsInputBuilder inputBuilder = new GetNearRTRICsInputBuilder();
141     ListenableFuture<RpcResult<GetNearRTRICsOutput>> result =
142         nonrtRicApiProvider.getNearRTRICs(inputBuilder.build());
143     Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
144   }
145
146   @Test
147   public void testCreatePolicyType() throws InterruptedException, ExecutionException {
148     CreatePolicyTypeInputBuilder inputBuilder = new CreatePolicyTypeInputBuilder();
149     inputBuilder.setNearRtRicId(nearRtRicId);
150     inputBuilder.setPolicyTypeId(policyTypeId);
151     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
152     String uri = nearRicUrlProvider.getPolicyTypeId(inputBuilder.build().getNearRtRicId(),
153                 String.valueOf(inputBuilder.build().getPolicyTypeId()));
154     ResponseEntity<Object> createPolicyTypeResponse = new ResponseEntity<>(HttpStatus.CREATED);
155     when(restAdapter.put(eq(uri), anyObject())).thenReturn(createPolicyTypeResponse);
156     ListenableFuture<RpcResult<CreatePolicyTypeOutput>> result =
157         nonrtRicApiProvider.createPolicyType(inputBuilder.build());
158     Assert.assertEquals(String.valueOf(HttpStatus.CREATED.value()), result.get().getResult().getCode());
159   }
160
161   @Test
162   public void testDeletePolicyType() throws InterruptedException, ExecutionException {
163     DeletePolicyTypeInputBuilder inputBuilder = new DeletePolicyTypeInputBuilder();
164     inputBuilder.setNearRtRicId(nearRtRicId);
165     inputBuilder.setPolicyTypeId(policyTypeId);
166     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
167     String uri = nearRicUrlProvider.getPolicyTypeId(inputBuilder.build().getNearRtRicId(),
168                 String.valueOf(inputBuilder.build().getPolicyTypeId()));
169     ResponseEntity<Object> deletePolicyTypeResponse = new ResponseEntity<>(HttpStatus.NO_CONTENT);
170     when(restAdapter.delete(eq(uri))).thenReturn(deletePolicyTypeResponse);
171     ListenableFuture<RpcResult<DeletePolicyTypeOutput>> result =
172         nonrtRicApiProvider.deletePolicyType(inputBuilder.build());
173     Assert.assertEquals(String.valueOf(HttpStatus.NO_CONTENT.value()), result.get().getResult().getCode());
174   }
175
176   @Test
177   public void testGetPolicyType() throws InterruptedException, ExecutionException {
178     GetPolicyTypeInputBuilder inputBuilder = new GetPolicyTypeInputBuilder();
179     inputBuilder.setNearRtRicId(nearRtRicId);
180     inputBuilder.setPolicyTypeId(policyTypeId);
181     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
182     String uri = nearRicUrlProvider.getPolicyTypeId(inputBuilder.build().getNearRtRicId(),
183             String.valueOf(inputBuilder.build().getPolicyTypeId()));
184     String policyType =
185             "{\"name\":\"Policy type 1\",\"description\":\"PT 1\",\"policy_type_id\":1,\"create_schema\":{}}";
186     ResponseEntity<Object> getPolicyTypeResponse = new ResponseEntity<>(policyType, HttpStatus.OK);
187     when(restAdapter.get(eq(uri), eq(String.class))).thenReturn(getPolicyTypeResponse);
188     ListenableFuture<RpcResult<GetPolicyTypeOutput>> result =
189         nonrtRicApiProvider.getPolicyType(inputBuilder.build());
190     Assert.assertEquals("Policy type 1", result.get().getResult().getName());
191     Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
192   }
193
194   @Test
195   public void testGetPolicyTypes() throws InterruptedException, ExecutionException {
196     GetPolicyTypesInputBuilder inputBuilder = new GetPolicyTypesInputBuilder();
197     inputBuilder.setNearRtRicId(nearRtRicId);
198     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
199     String uri = nearRicUrlProvider.getPolicyTypes(inputBuilder.build().getNearRtRicId());
200     List<Integer> policyTypesInteger = new ArrayList<>();
201     policyTypesInteger.add(20001);
202     List<Long> policyTypesLong = new ArrayList<>();
203     policyTypesLong.add(20001L);
204     ResponseEntity<Object> getPolicyTypesResponse = new ResponseEntity<>(policyTypesInteger, HttpStatus.OK);
205     when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(getPolicyTypesResponse);
206     ListenableFuture<RpcResult<GetPolicyTypesOutput>> result =
207         nonrtRicApiProvider.getPolicyTypes(inputBuilder.build());
208     Assert.assertEquals(policyTypesLong, result.get().getResult().getPolicyTypeIdList());
209     Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
210   }
211
212   @Test
213   public void testGetPolicyInstance() throws InterruptedException, ExecutionException {
214     GetPolicyInstanceInputBuilder inputBuilder = new GetPolicyInstanceInputBuilder();
215     inputBuilder.setNearRtRicId(nearRtRicId);
216     inputBuilder.setPolicyTypeId(policyTypeId);
217     inputBuilder.setPolicyInstanceId(policyTypeInstanceId);
218     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
219     String uri = nearRicUrlProvider.getPolicyInstanceId(inputBuilder.build().getNearRtRicId(),
220         String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
221     String policyInstance =
222             "{\"scope\":{\"ue_id\":\"2\"},\"statement\":{\"priority_level\":\"1\"},\"policy_id\":\"pi12\"}";
223     ResponseEntity<Object> getPolicyInstanceResponse = new ResponseEntity<>(policyInstance, HttpStatus.OK);
224     when(restAdapter.get(eq(uri), eq(String.class))).thenReturn(getPolicyInstanceResponse);
225     ListenableFuture<RpcResult<GetPolicyInstanceOutput>> result =
226         nonrtRicApiProvider.getPolicyInstance(inputBuilder.build());
227     Assert.assertEquals(policyInstance, result.get().getResult().getPolicyInstance());
228     Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
229   }
230
231   @Test
232   public void testGetPolicyInstances() throws InterruptedException, ExecutionException {
233     GetPolicyInstancesInputBuilder inputBuilder = new GetPolicyInstancesInputBuilder();
234     inputBuilder.setNearRtRicId(nearRtRicId);
235     inputBuilder.setPolicyTypeId(policyTypeId);
236     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
237     String uri = nearRicUrlProvider.getPolicyInstances(inputBuilder.build().getNearRtRicId(),
238             String.valueOf(inputBuilder.build().getPolicyTypeId()));
239     List<String> policyInstances = new ArrayList<>();
240     policyInstances.add("3d2157af-6a8f-4a7c-810f-38c2f824bf12");
241     ResponseEntity<Object> getPolicyInstancesResponse = new ResponseEntity<>(policyInstances, HttpStatus.OK);
242     when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(getPolicyInstancesResponse);
243     ListenableFuture<RpcResult<GetPolicyInstancesOutput>> result =
244         nonrtRicApiProvider.getPolicyInstances(inputBuilder.build());
245     Assert.assertEquals(policyInstances, result.get().getResult().getPolicyInstanceIdList());
246     Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
247   }
248
249   @Test
250   public void testGetStatus() throws InterruptedException, ExecutionException {
251     GetStatusInputBuilder inputBuilder = new GetStatusInputBuilder();
252     inputBuilder.setNearRtRicId(nearRtRicId);
253     inputBuilder.setPolicyTypeId(policyTypeId);
254     inputBuilder.setPolicyInstanceId(policyTypeInstanceId);
255     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
256     String uri = nearRicUrlProvider.getPolicyInstanceIdStatus(inputBuilder.build().getNearRtRicId(),
257         String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
258     String policyInstanceStatus = "[{\"handler_id\":\"NearRTRIC-1\",\"status\":\"enforced\"}]";
259     ResponseEntity<Object> getStatusResponse =
260             new ResponseEntity<>(new Gson().fromJson(policyInstanceStatus, List.class), HttpStatus.OK);
261     when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(getStatusResponse);
262     ListenableFuture<RpcResult<GetStatusOutput>> result =
263         nonrtRicApiProvider.getStatus(inputBuilder.build());
264     Assert.assertEquals("enforced", result.get().getResult().getStatus());
265     Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
266   }
267
268   @Test
269   public void testGetHealthCheck() throws InterruptedException, ExecutionException {
270     GetHealthCheckInputBuilder inputBuilder = new GetHealthCheckInputBuilder();
271     inputBuilder.setNearRtRicId(nearRtRicId);
272     Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
273     String uri = nearRicUrlProvider.getHealthCheck(inputBuilder.build().getNearRtRicId());
274     ResponseEntity<Object> getHealthCheckResponse = new ResponseEntity<>(HttpStatus.OK);
275     when(restAdapter.get(eq(uri), eq(Object.class))).thenReturn(getHealthCheckResponse);
276     ListenableFuture<RpcResult<GetHealthCheckOutput>> result =
277         nonrtRicApiProvider.getHealthCheck(inputBuilder.build());
278     Assert.assertEquals(true, result.get().getResult().isHealthStatus());
279     Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
280   }
281 }