2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.adapters.cnf.service;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 import org.mockito.ArgumentMatchers;
28 import org.mockito.Mock;
29 import org.onap.so.adapters.cnf.MulticloudConfiguration;
30 import org.onap.so.adapters.cnf.model.BpmnInstanceRequest;
31 import org.onap.so.adapters.cnf.service.healthcheck.HealthCheckService;
32 import org.onap.so.adapters.cnf.service.statuscheck.SimpleStatusCheckService;
33 import org.springframework.boot.test.context.SpringBootTest;
34 import org.springframework.http.HttpMethod;
35 import org.springframework.http.HttpStatus;
36 import org.springframework.test.context.junit4.SpringRunner;
37 import org.springframework.web.client.HttpClientErrorException;
38 import org.springframework.web.client.HttpServerErrorException;
39 import org.springframework.web.client.HttpStatusCodeException;
40 import org.springframework.web.client.RestTemplate;
42 import javax.persistence.EntityNotFoundException;
43 import java.io.IOException;
44 import java.util.HashMap;
47 import static org.mockito.Mockito.doReturn;
48 import static org.mockito.Mockito.doThrow;
49 import static org.mockito.Mockito.mock;
50 import static org.mockito.Mockito.spy;
53 @RunWith(SpringRunner.class)
54 public class CnfAdapterServiceTest {
56 private static final String INSTANCE_ID = "ins";
58 private CnfAdapterService cnfAdapterService;
61 private RestTemplate restTemplate;
64 HealthCheckService healthCheckService;
67 SimpleStatusCheckService simpleStatusCheckService;
72 MulticloudConfiguration multicloudConfiguration = mock(MulticloudConfiguration.class);
73 doReturn("http://test.url").when(multicloudConfiguration).getMulticloudUrl();
74 cnfAdapterService = spy(new CnfAdapterService(restTemplate, multicloudConfiguration));
79 public void createInstanceTest() throws Exception {
81 cnfAdapterService.createInstance(getBpmnInstanceRequest());
82 } catch (Exception exp) {
87 @Test(expected = EntityNotFoundException.class)
88 public void testcreateInstanceHttpException() {
89 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
90 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
92 cnfAdapterService.createInstance(getBpmnInstanceRequest());
93 } catch (IOException e) {
98 @Test(expected = HttpStatusCodeException.class)
99 public void testcreateInstanceHttpStatusCodeException() {
100 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
101 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
103 cnfAdapterService.createInstance(getBpmnInstanceRequest());
104 } catch (IOException e) {
110 public void getInstanceByInstanceIdTest() throws Exception {
112 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
113 } catch (Exception exp) {
118 @Test(expected = EntityNotFoundException.class)
119 public void testInstanceByInstanceIdHttpException() {
120 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
121 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
123 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
124 } catch (IOException e) {
129 @Test(expected = HttpStatusCodeException.class)
130 public void testInstanceByInstanceIdHttpStatusCodeException() {
131 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
132 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
134 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
135 } catch (IOException e) {
141 public void getInstanceStatusByInstanceIdTest() throws Exception {
143 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
144 } catch (Exception exp) {
149 @Test(expected = EntityNotFoundException.class)
150 public void testInstanceStatusByInstanceIdHttpException() {
151 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
152 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
154 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
155 } catch (IOException e) {
160 @Test(expected = HttpStatusCodeException.class)
161 public void testInstanceStatusByInstanceIdHttpStatusCodeException() {
162 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
163 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
165 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
166 } catch (IOException e) {
172 public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
173 RbNameVersionData rbNameVersionData = new RbNameVersionData();
175 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
176 rbNameVersionData.getProfileName());
177 } catch (Exception exp) {
182 @Test(expected = EntityNotFoundException.class)
183 public void testInstanceByRBNameOrRBVersionOrProfileNameHttpException() {
184 RbNameVersionData rbNameVersionData = new RbNameVersionData();
185 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
186 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
188 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
189 rbNameVersionData.getProfileName());
190 } catch (IOException e) {
195 @Test(expected = HttpStatusCodeException.class)
196 public void testInstanceByRBNameOrRBVersionOrProfileNameHttpStatusCodeException() {
197 RbNameVersionData rbNameVersionData = new RbNameVersionData();
198 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
199 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
201 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
202 rbNameVersionData.getProfileName());
203 } catch (IOException e) {
209 public void deleteInstanceByInstanceIdTest() throws Exception {
211 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
212 } catch (Exception exp) {
217 @Test(expected = EntityNotFoundException.class)
218 public void testdeleteInstanceByInstanceIdHttpException() {
219 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
220 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
222 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
223 } catch (IOException e) {
228 @Test(expected = HttpStatusCodeException.class)
229 public void testdeleteInstanceByInstanceIdException() {
230 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
231 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
233 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
234 } catch (IOException e) {
240 public void queryInstanceResourcesTest() {
242 cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
243 } catch (Exception exp) {
248 @Test(expected = EntityNotFoundException.class)
249 public void queryInstanceResourcesException() {
250 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
251 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
252 cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
256 public void queryResourcesTest() {
258 cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
259 } catch (Exception exp) {
264 @Test(expected = EntityNotFoundException.class)
265 public void queryResourcesException() {
266 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
267 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
268 cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
271 private BpmnInstanceRequest getBpmnInstanceRequest() {
272 Map<String, String> labels = new HashMap<String, String>();
273 labels.put("custom-label-1", "label1");
274 Map<String, String> overrideValues = new HashMap<String, String>();
275 overrideValues.put("a", "b");
276 labels.put("image.tag", "latest");
277 labels.put("dcae_collector_ip", "1.2.3.4");
278 BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest();
279 bpmnInstanceRequest.setCloudRegionId("v1");
280 bpmnInstanceRequest.setLabels(labels);
281 bpmnInstanceRequest.setModelInvariantId("krd");
282 bpmnInstanceRequest.setModelVersionId("p1");
283 bpmnInstanceRequest.setOverrideValues(overrideValues);
284 bpmnInstanceRequest.setVfModuleUUID("20200824");
285 bpmnInstanceRequest.setK8sRBProfileName("K8sRBProfileName is required");
286 return bpmnInstanceRequest;
290 private class RbNameVersionData {
292 String rbName = "rb";
293 String rbVersion = "rv1";
294 String profileName = "p1";