06e93e13d5bc7c5f2c1fad5e33c650f8ef77b2b4
[so/adapters/so-cnf-adapter.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.so.adapters.cnf.service;
22
23 import lombok.Data;
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;
41
42 import javax.persistence.EntityNotFoundException;
43 import java.io.IOException;
44 import java.util.HashMap;
45 import java.util.Map;
46
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;
51
52 @SpringBootTest
53 @RunWith(SpringRunner.class)
54 public class CnfAdapterServiceTest {
55
56     private static final String INSTANCE_ID = "ins";
57
58     private CnfAdapterService cnfAdapterService;
59
60     @Mock
61     private RestTemplate restTemplate;
62
63     @Mock
64     HealthCheckService healthCheckService;
65
66     @Mock
67     SimpleStatusCheckService simpleStatusCheckService;
68
69
70     @Before
71     public void setUp() {
72         MulticloudConfiguration multicloudConfiguration = mock(MulticloudConfiguration.class);
73         doReturn("http://test.url").when(multicloudConfiguration).getMulticloudUrl();
74         cnfAdapterService = spy(new CnfAdapterService(restTemplate, multicloudConfiguration));
75     }
76
77
78     @Test
79     public void createInstanceTest() throws Exception {
80         try {
81             cnfAdapterService.createInstance(getBpmnInstanceRequest());
82         } catch (Exception exp) {
83             assert (true);
84         }
85     }
86
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());
91         try {
92             cnfAdapterService.createInstance(getBpmnInstanceRequest());
93         } catch (IOException e) {
94             e.printStackTrace();
95         }
96     }
97
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());
102         try {
103             cnfAdapterService.createInstance(getBpmnInstanceRequest());
104         } catch (IOException e) {
105             e.printStackTrace();
106         }
107     }
108
109     @Test
110     public void getInstanceByInstanceIdTest() throws Exception {
111         try {
112             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
113         } catch (Exception exp) {
114             assert (true);
115         }
116     }
117
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());
122         try {
123             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
124         } catch (IOException e) {
125             e.printStackTrace();
126         }
127     }
128
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());
133         try {
134             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
135         } catch (IOException e) {
136             e.printStackTrace();
137         }
138     }
139
140     @Test
141     public void getInstanceStatusByInstanceIdTest() throws Exception {
142         try {
143             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
144         } catch (Exception exp) {
145             assert (true);
146         }
147     }
148
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());
153         try {
154             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
155         } catch (IOException e) {
156             e.printStackTrace();
157         }
158     }
159
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());
164         try {
165             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
166         } catch (IOException e) {
167             e.printStackTrace();
168         }
169     }
170
171     @Test
172     public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
173         RbNameVersionData rbNameVersionData = new RbNameVersionData();
174         try {
175             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
176                     rbNameVersionData.getProfileName());
177         } catch (Exception exp) {
178             assert (true);
179         }
180     }
181
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());
187         try {
188             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
189                     rbNameVersionData.getProfileName());
190         } catch (IOException e) {
191             e.printStackTrace();
192         }
193     }
194
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());
200         try {
201             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
202                     rbNameVersionData.getProfileName());
203         } catch (IOException e) {
204             e.printStackTrace();
205         }
206     }
207
208     @Test
209     public void deleteInstanceByInstanceIdTest() throws Exception {
210         try {
211             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
212         } catch (Exception exp) {
213             assert (true);
214         }
215     }
216
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());
221         try {
222             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
223         } catch (IOException e) {
224             e.printStackTrace();
225         }
226     }
227
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());
232         try {
233             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
234         } catch (IOException e) {
235             e.printStackTrace();
236         }
237     }
238
239     @Test
240     public void queryInstanceResourcesTest() {
241         try {
242             cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
243         } catch (Exception exp) {
244             assert (true);
245         }
246     }
247
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, "", "", "", "", "");
253     }
254
255     @Test
256     public void queryResourcesTest() {
257         try {
258             cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
259         } catch (Exception exp) {
260             assert (true);
261         }
262     }
263
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, "", "", "", "", "");
269     }
270
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;
287     }
288
289     @Data
290     private class RbNameVersionData {
291
292         String rbName = "rb";
293         String rbVersion = "rv1";
294         String profileName = "p1";
295     }
296 }
297
298