f049310ba5099ab8523bf1a1afa65fcd7565bfec
[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 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;
28
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;
46
47 import java.io.IOException;
48 import java.util.HashMap;
49 import java.util.Map;
50
51 import javax.persistence.EntityNotFoundException;
52
53 import lombok.Data;
54
55 @RunWith(SpringRunner.class)
56 public class CnfAdapterServiceTest {
57
58     private static final String INSTANCE_ID = "ins";
59
60     private CnfAdapterService cnfAdapterService;
61
62     @Mock
63     private RestTemplate restTemplate;
64
65     @Mock
66     HealthCheckService healthCheckService;
67
68     @Mock
69     SimpleStatusCheckService simpleStatusCheckService;
70
71
72     @Before
73     public void setUp() {
74         MulticloudConfiguration multicloudConfiguration = mock(MulticloudConfiguration.class);
75         doReturn("http://test.url").when(multicloudConfiguration).getMulticloudUrl();
76         cnfAdapterService = spy(new CnfAdapterService(restTemplate, healthCheckService, simpleStatusCheckService, multicloudConfiguration));
77     }
78
79
80     @Test
81     public void createInstanceTest() throws Exception {
82         try {
83             cnfAdapterService.createInstance(getBpmnInstanceRequest());
84         } catch (Exception exp) {
85             assert (true);
86         }
87     }
88
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());
93         try {
94             cnfAdapterService.createInstance(getBpmnInstanceRequest());
95         } catch (IOException e) {
96             e.printStackTrace();
97         }
98     }
99
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());
104         try {
105             cnfAdapterService.createInstance(getBpmnInstanceRequest());
106         } catch (IOException e) {
107             e.printStackTrace();
108         }
109     }
110
111     @Test
112     public void getInstanceByInstanceIdTest() throws Exception {
113         try {
114             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
115         } catch (Exception exp) {
116             assert (true);
117         }
118     }
119
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());
124         try {
125             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
126         } catch (IOException e) {
127             e.printStackTrace();
128         }
129     }
130
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());
135         try {
136             cnfAdapterService.getInstanceByInstanceId(INSTANCE_ID);
137         } catch (IOException e) {
138             e.printStackTrace();
139         }
140     }
141
142     @Test
143     public void getInstanceStatusByInstanceIdTest() throws Exception {
144         try {
145             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
146         } catch (Exception exp) {
147             assert (true);
148         }
149     }
150
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());
155         try {
156             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
157         } catch (IOException e) {
158             e.printStackTrace();
159         }
160     }
161
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());
166         try {
167             cnfAdapterService.getInstanceStatusByInstanceId(INSTANCE_ID);
168         } catch (IOException e) {
169             e.printStackTrace();
170         }
171     }
172
173     @Test
174     public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
175         RbNameVersionData rbNameVersionData = new RbNameVersionData();
176         try {
177             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
178                     rbNameVersionData.getProfileName());
179         } catch (Exception exp) {
180             assert (true);
181         }
182     }
183
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());
189         try {
190             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
191                     rbNameVersionData.getProfileName());
192         } catch (IOException e) {
193             e.printStackTrace();
194         }
195     }
196
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());
202         try {
203             cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbNameVersionData.getRbName(), rbNameVersionData.getRbVersion(),
204                     rbNameVersionData.getProfileName());
205         } catch (IOException e) {
206             e.printStackTrace();
207         }
208     }
209
210     @Test
211     public void deleteInstanceByInstanceIdTest() throws Exception {
212         try {
213             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
214         } catch (Exception exp) {
215             assert (true);
216         }
217     }
218
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());
223         try {
224             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
225         } catch (IOException e) {
226             e.printStackTrace();
227         }
228     }
229
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());
234         try {
235             cnfAdapterService.deleteInstanceByInstanceId(INSTANCE_ID);
236         } catch (IOException e) {
237             e.printStackTrace();
238         }
239     }
240
241     @Test
242     public void queryInstanceResourcesTest() {
243         try {
244             cnfAdapterService.queryInstanceResources(INSTANCE_ID, "", "", "", "", "");
245         } catch (Exception exp) {
246             assert (true);
247         }
248     }
249
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, "", "", "", "", "");
255     }
256
257     @Test
258     public void queryResourcesTest() {
259         try {
260             cnfAdapterService.queryResources(INSTANCE_ID, "", "", "", "", "");
261         } catch (Exception exp) {
262             assert (true);
263         }
264     }
265
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, "", "", "", "", "");
271     }
272
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;
289     }
290
291     @Data
292     private class RbNameVersionData {
293
294         String rbName = "rb";
295         String rbVersion = "rv1";
296         String profileName = "p1";
297     }
298 }
299
300