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.http.HttpMethod;
34 import org.springframework.http.HttpStatus;
35 import org.springframework.test.context.junit4.SpringRunner;
36 import org.springframework.web.client.HttpClientErrorException;
37 import org.springframework.web.client.HttpServerErrorException;
38 import org.springframework.web.client.HttpStatusCodeException;
39 import org.springframework.web.client.RestTemplate;
41 import javax.persistence.EntityNotFoundException;
42 import java.io.IOException;
43 import java.util.HashMap;
46 import static org.mockito.Mockito.doReturn;
47 import static org.mockito.Mockito.doThrow;
48 import static org.mockito.Mockito.mock;
49 import static org.mockito.Mockito.spy;
51 @RunWith(SpringRunner.class)
52 public class CnfAdapterServiceTest {
54 private static final String INSTANCE_ID = "ins";
56 private CnfAdapterService cnfAdapterService;
59 private RestTemplate restTemplate;
62 HealthCheckService healthCheckService;
65 SimpleStatusCheckService simpleStatusCheckService;
70 MulticloudConfiguration multicloudConfiguration = mock(MulticloudConfiguration.class);
71 doReturn("http://test.url").when(multicloudConfiguration).getMulticloudUrl();
72 cnfAdapterService = spy(new CnfAdapterService(restTemplate, multicloudConfiguration));
77 public void createInstanceTest() throws Exception {
79 cnfAdapterService.createInstance(getBpmnInstanceRequest());
80 } catch (Exception exp) {
85 @Test(expected = EntityNotFoundException.class)
86 public void testcreateInstanceHttpException() {
87 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
88 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
90 cnfAdapterService.createInstance(getBpmnInstanceRequest());
91 } catch (IOException e) {
96 @Test(expected = HttpStatusCodeException.class)
97 public void testcreateInstanceHttpStatusCodeException() {
98 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
99 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
101 cnfAdapterService.createInstance(getBpmnInstanceRequest());
102 } catch (IOException e) {
108 public void getInstanceByInstanceIdTest() throws Exception {
110 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
111 } catch (Exception exp) {
116 @Test(expected = EntityNotFoundException.class)
117 public void testInstanceByInstanceIdHttpException() {
118 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
119 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
121 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
122 } catch (IOException e) {
127 @Test(expected = HttpStatusCodeException.class)
128 public void testInstanceByInstanceIdHttpStatusCodeException() {
129 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
130 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
132 cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
133 } catch (IOException e) {
139 public void getInstanceStatusByInstanceIdTest() throws Exception {
141 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
142 } catch (Exception exp) {
147 @Test(expected = EntityNotFoundException.class)
148 public void testInstanceStatusByInstanceIdHttpException() {
149 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
150 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
152 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
153 } catch (IOException e) {
158 @Test(expected = HttpStatusCodeException.class)
159 public void testInstanceStatusByInstanceIdHttpStatusCodeException() {
160 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
161 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
163 cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
164 } catch (IOException e) {
170 public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
171 RbNameVersionData rbNameVersionData = new RbNameVersionData();
173 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
174 rbNameVersionData.getProfileName());
175 } catch (Exception exp) {
180 @Test(expected = EntityNotFoundException.class)
181 public void testInstanceByRBNameOrRBVersionOrProfileNameHttpException() {
182 RbNameVersionData rbNameVersionData = new RbNameVersionData();
183 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
184 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
186 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
187 rbNameVersionData.getProfileName());
188 } catch (IOException e) {
193 @Test(expected = HttpStatusCodeException.class)
194 public void testInstanceByRBNameOrRBVersionOrProfileNameHttpStatusCodeException() {
195 RbNameVersionData rbNameVersionData = new RbNameVersionData();
196 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
197 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
199 cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
200 rbNameVersionData.getProfileName());
201 } catch (IOException e) {
207 public void deleteInstanceByInstanceIdTest() throws Exception {
209 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
210 } catch (Exception exp) {
215 @Test(expected = EntityNotFoundException.class)
216 public void testdeleteInstanceByInstanceIdHttpException() {
217 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
218 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
220 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
221 } catch (IOException e) {
226 @Test(expected = HttpStatusCodeException.class)
227 public void testdeleteInstanceByInstanceIdException() {
228 doThrow(new HttpServerErrorException(HttpStatus.CONFLICT)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
229 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
231 cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
232 } catch (IOException e) {
238 public void queryInstanceResourcesTest() {
240 cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
241 } catch (Exception exp) {
246 @Test(expected = EntityNotFoundException.class)
247 public void queryInstanceResourcesException() {
248 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
249 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
250 cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
254 public void queryResourcesTest() {
256 cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
257 } catch (Exception exp) {
262 @Test(expected = EntityNotFoundException.class)
263 public void queryResourcesException() {
264 doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)).when(restTemplate).exchange(ArgumentMatchers.anyString(),
265 ArgumentMatchers.any(HttpMethod.class), ArgumentMatchers.any(), ArgumentMatchers.<Class<String>>any());
266 cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
269 private BpmnInstanceRequest getBpmnInstanceRequest() {
270 Map<String, String> labels = new HashMap<String, String>();
271 labels.put("custom-label-1", "label1");
272 Map<String, String> overrideValues = new HashMap<String, String>();
273 overrideValues.put("a", "b");
274 labels.put("image.tag", "latest");
275 labels.put("dcae_collector_ip", "1.2.3.4");
276 BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest();
277 bpmnInstanceRequest.setCloudRegionId("v1");
278 bpmnInstanceRequest.setLabels(labels);
279 bpmnInstanceRequest.setModelInvariantId("krd");
280 bpmnInstanceRequest.setModelVersionId("p1");
281 bpmnInstanceRequest.setOverrideValues(overrideValues);
282 bpmnInstanceRequest.setVfModuleUUID("20200824");
283 bpmnInstanceRequest.setK8sRBProfileName("K8sRBProfileName is required");
284 return bpmnInstanceRequest;
288 private class RbNameVersionData {
290 String rbName = "rb";
291 String rbVersion = "rv1";
292 String profileName = "p1";