12c0511f90983f1e11f2eec9aa9d343f04bb8094
[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.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;
40
41 import javax.persistence.EntityNotFoundException;
42 import java.io.IOException;
43 import java.util.HashMap;
44 import java.util.Map;
45
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;
50
51 @RunWith(SpringRunner.class)
52 public class CnfAdapterServiceTest {
53
54     private static final String INSTANCE_ID = "ins";
55
56     private CnfAdapterService cnfAdapterService;
57
58     @Mock
59     private RestTemplate restTemplate;
60
61     @Mock
62     HealthCheckService healthCheckService;
63
64     @Mock
65     SimpleStatusCheckService simpleStatusCheckService;
66
67
68     @Before
69     public void setUp() {
70         MulticloudConfiguration multicloudConfiguration = mock(MulticloudConfiguration.class);
71         doReturn("http://test.url").when(multicloudConfiguration).getMulticloudUrl();
72         cnfAdapterService = spy(new CnfAdapterService(restTemplate, multicloudConfiguration));
73     }
74
75
76     @Test
77     public void createInstanceTest() throws Exception {
78         try {
79             cnfAdapterService.createInstance(getBpmnInstanceRequest());
80         } catch (Exception exp) {
81             assert (true);
82         }
83     }
84
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());
89         try {
90             cnfAdapterService.createInstance(getBpmnInstanceRequest());
91         } catch (IOException e) {
92             e.printStackTrace();
93         }
94     }
95
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());
100         try {
101             cnfAdapterService.createInstance(getBpmnInstanceRequest());
102         } catch (IOException e) {
103             e.printStackTrace();
104         }
105     }
106
107     @Test
108     public void getInstanceByInstanceIdTest() throws Exception {
109         try {
110             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
111         } catch (Exception exp) {
112             assert (true);
113         }
114     }
115
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());
120         try {
121             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
122         } catch (IOException e) {
123             e.printStackTrace();
124         }
125     }
126
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());
131         try {
132             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
133         } catch (IOException e) {
134             e.printStackTrace();
135         }
136     }
137
138     @Test
139     public void getInstanceStatusByInstanceIdTest() throws Exception {
140         try {
141             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
142         } catch (Exception exp) {
143             assert (true);
144         }
145     }
146
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());
151         try {
152             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
153         } catch (IOException e) {
154             e.printStackTrace();
155         }
156     }
157
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());
162         try {
163             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
164         } catch (IOException e) {
165             e.printStackTrace();
166         }
167     }
168
169     @Test
170     public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
171         RbNameVersionData rbNameVersionData = new RbNameVersionData();
172         try {
173             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
174                     rbNameVersionData.getProfileName());
175         } catch (Exception exp) {
176             assert (true);
177         }
178     }
179
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());
185         try {
186             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
187                     rbNameVersionData.getProfileName());
188         } catch (IOException e) {
189             e.printStackTrace();
190         }
191     }
192
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());
198         try {
199             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
200                     rbNameVersionData.getProfileName());
201         } catch (IOException e) {
202             e.printStackTrace();
203         }
204     }
205
206     @Test
207     public void deleteInstanceByInstanceIdTest() throws Exception {
208         try {
209             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
210         } catch (Exception exp) {
211             assert (true);
212         }
213     }
214
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());
219         try {
220             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
221         } catch (IOException e) {
222             e.printStackTrace();
223         }
224     }
225
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());
230         try {
231             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
232         } catch (IOException e) {
233             e.printStackTrace();
234         }
235     }
236
237     @Test
238     public void queryInstanceResourcesTest() {
239         try {
240             cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
241         } catch (Exception exp) {
242             assert (true);
243         }
244     }
245
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, "", "", "", "", "");
251     }
252
253     @Test
254     public void queryResourcesTest() {
255         try {
256             cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
257         } catch (Exception exp) {
258             assert (true);
259         }
260     }
261
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, "", "", "", "", "");
267     }
268
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;
285     }
286
287     @Data
288     private class RbNameVersionData {
289
290         String rbName = "rb";
291         String rbVersion = "rv1";
292         String profileName = "p1";
293     }
294 }
295
296