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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.sdnc.northbound;
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;
74 * This class Tests all the methods in NonrtRicApiProvider
76 * @author lathishbabu.ganesan@est.tech
80 @RunWith(MockitoJUnitRunner.class)
81 public class NonrtRicApiProviderTest extends AbstractConcurrentDataBrokerTest {
83 protected static final Logger LOG = LoggerFactory.getLogger(NonrtRicApiProviderTest.class);
84 protected NonrtRicApiProvider nonrtRicApiProvider;
85 protected DataBroker dataBroker;
87 protected NotificationPublishService mockNotificationPublishService;
89 protected RpcProviderRegistry mockRpcProviderRegistry;
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";
99 public void setUp() throws Exception {
100 nearRicUrlProvider = new NearRicUrlProvider();
101 dataBroker = getDataBroker();
102 nonrtRicApiProvider = new NonrtRicApiProvider(dataBroker, mockNotificationPublishService,
103 mockRpcProviderRegistry);
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());
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());
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());
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());
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());
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()));
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());
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());
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());
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());
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());
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());