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;
23 import static org.mockito.ArgumentMatchers.any;
24 import static org.mockito.Mockito.doReturn;
25 import static org.mockito.Mockito.doThrow;
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.spy;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.ArgumentMatchers;
33 import org.mockito.Mock;
34 import org.onap.so.adapters.cnf.MulticloudConfiguration;
35 import org.onap.so.adapters.cnf.model.BpmnInstanceRequest;
36 import org.onap.so.adapters.cnf.service.healthcheck.HealthCheckService;
37 import org.onap.so.adapters.cnf.service.statuscheck.SimpleStatusCheckService;
38 import org.springframework.http.HttpMethod;
39 import org.springframework.http.HttpStatus;
40 import org.springframework.http.ResponseEntity;
41 import org.springframework.test.context.junit4.SpringRunner;
42 import org.springframework.web.client.HttpClientErrorException;
43 import org.springframework.web.client.HttpServerErrorException;
44 import org.springframework.web.client.HttpStatusCodeException;
45 import org.springframework.web.client.RestTemplate;
47 import java.io.IOException;
48 import java.util.HashMap;
51 import javax.persistence.EntityNotFoundException;
55 @RunWith(SpringRunner.class)
56 public class CnfAdapterServiceTest {
58 private static final String INSTANCE_ID = "ins";
60 private CnfAdapterService cnfAdapterService;
63 private RestTemplate restTemplate;
66 HealthCheckService healthCheckService;
69 SimpleStatusCheckService simpleStatusCheckService;
74 MulticloudConfiguration multicloudConfiguration = mock(MulticloudConfiguration.class);
75 doReturn("http://test.url").when(multicloudConfiguration).getMulticloudUrl();
76 cnfAdapterService = spy(new CnfAdapterService(restTemplate, healthCheckService, simpleStatusCheckService, multicloudConfiguration));
81 public void createInstanceTest() throws Exception {
83 cnfAdapterService.createInstance(getBpmnInstanceRequest());
84 } catch (Exception exp) {
89 @Test(expected = EntityNotFoundException.class)
90 public void testcreateInstanceHttpException() {
91 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
92 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
94 cnfAdapterService.createInstance(getBpmnInstanceRequest());
95 } catch (IOException e) {
100 @Test(expected = HttpStatusCodeException.class)
101 public void testcreateInstanceHttpStatusCodeException() {
102 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
103 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
105 cnfAdapterService.createInstance(getBpmnInstanceRequest());
106 } catch (IOException e) {
112 public void getInstanceByInstanceIdTest() throws Exception {
114 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
115 } catch (Exception exp) {
120 @Test(expected = EntityNotFoundException.class)
121 public void testInstanceByInstanceIdHttpException() {
122 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
123 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
125 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
126 } catch (IOException e) {
131 @Test(expected = HttpStatusCodeException.class)
132 public void testInstanceByInstanceIdHttpStatusCodeException() {
133 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
134 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
136 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
137 } catch (IOException e) {
143 public void getInstanceStatusByInstanceIdTest() throws Exception {
145 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
146 } catch (Exception exp) {
151 @Test(expected = EntityNotFoundException.class)
152 public void testInstanceStatusByInstanceIdHttpException() {
153 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
154 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
156 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
157 } catch (IOException e) {
162 @Test(expected = HttpStatusCodeException.class)
163 public void testInstanceStatusByInstanceIdHttpStatusCodeException() {
164 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
165 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
167 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
168 } catch (IOException e) {
174 public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
175 RbNameVersionData rbNameVersionData = new RbNameVersionData();
177 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
178 rbNameVersionData.getProfileName());
179 } catch (Exception exp) {
184 @Test(expected = EntityNotFoundException.class)
185 public void testInstanceByRBNameOrRBVersionOrProfileNameHttpException() {
186 RbNameVersionData rbNameVersionData = new RbNameVersionData();
187 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
188 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
190 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
191 rbNameVersionData.getProfileName());
192 } catch (IOException e) {
197 @Test(expected = HttpStatusCodeException.class)
198 public void testInstanceByRBNameOrRBVersionOrProfileNameHttpStatusCodeException() {
199 RbNameVersionData rbNameVersionData = new RbNameVersionData();
200 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
201 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
203 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
204 rbNameVersionData.getProfileName());
205 } catch (IOException e) {
211 public void deleteInstanceByInstanceIdTest() throws Exception {
213 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
214 } catch (Exception exp) {
219 @Test(expected = EntityNotFoundException.class)
220 public void testdeleteInstanceByInstanceIdHttpException() {
221 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
222 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
224 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
225 } catch (IOException e) {
230 @Test(expected = HttpStatusCodeException.class)
231 public void testdeleteInstanceByInstanceIdException() {
232 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
233 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
235 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
236 } catch (IOException e) {
242 public void queryInstanceResourcesTest() {
244 cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
245 } catch (Exception exp) {
250 @Test(expected = EntityNotFoundException.class)
251 public void queryInstanceResourcesException() {
252 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
253 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
254 cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
258 public void queryResourcesTest() {
260 cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
261 } catch (Exception exp) {
266 @Test(expected = EntityNotFoundException.class)
267 public void queryResourcesException() {
268 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
269 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
270 cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
273 private BpmnInstanceRequest getBpmnInstanceRequest() {
274 Map<String, String> labels = new HashMap<String, String>();
275 labels.put("custom-label-1", "label1");
276 Map<String, String> overrideValues = new HashMap<String, String>();
277 overrideValues.put("a", "b");
278 labels.put("image.tag", "latest");
279 labels.put("dcae_collector_ip", "1.2.3.4");
280 BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest();
281 bpmnInstanceRequest.setCloudRegionId("v1");
282 bpmnInstanceRequest.setLabels(labels);
283 bpmnInstanceRequest.setModelInvariantId("krd");
284 bpmnInstanceRequest.setModelVersionId("p1");
285 bpmnInstanceRequest.setOverrideValues(overrideValues);
286 bpmnInstanceRequest.setVfModuleUUID("20200824");
287 bpmnInstanceRequest.setK8sRBProfileName("K8sRBProfileName is required");
288 return bpmnInstanceRequest;
292 private class RbNameVersionData {
294 String rbName = "rb";
295 String rbVersion = "rv1";
296 String profileName = "p1";