Merge remote-tracking branch 'origin/dublin' into 'origin/master'
[so.git] / adapters / mso-requests-db-adapter / src / test / java / org / onap / so / adapters / requestsdb / client / RequestsDbClientTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 AT&T Intellectual Property. 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.requestsdb.client;
22
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertFalse;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertNull;
29 import java.sql.Timestamp;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.List;
33 import java.util.Map;
34 import java.util.UUID;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
38 import org.onap.so.db.request.beans.CloudApiRequests;
39 import org.onap.so.db.request.beans.InfraActiveRequests;
40 import org.onap.so.db.request.beans.OperationStatus;
41 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
42 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
43 import org.onap.so.db.request.beans.RequestProcessingData;
44 import org.springframework.beans.factory.annotation.Autowired;
45 import org.springframework.boot.web.server.LocalServerPort;
46
47 public class RequestsDbClientTest extends RequestsAdapterBase {
48
49     @Autowired
50     private RequestDbClientPortChanger requestsDbClient;
51
52     private InfraActiveRequests infraActiveRequests;
53
54     @LocalServerPort
55     private int port;
56
57     @Before
58     public void setup() {
59         requestsDbClient.setPort(port);
60
61         infraActiveRequests = new InfraActiveRequests();
62         infraActiveRequests.setRequestId(UUID.randomUUID().toString());
63         infraActiveRequests.setOperationalEnvId(UUID.randomUUID().toString());
64         infraActiveRequests.setServiceInstanceId(UUID.randomUUID().toString());
65         infraActiveRequests.setServiceInstanceName("serviceInstanceNameTest");
66         infraActiveRequests.setVnfId(UUID.randomUUID().toString());
67         infraActiveRequests.setVnfName("vnfInstanceNameTest");
68         infraActiveRequests.setVfModuleId(UUID.randomUUID().toString());
69         infraActiveRequests.setVfModuleName("vfModuleInstanceNameTest");
70         infraActiveRequests.setVolumeGroupId(UUID.randomUUID().toString());
71         infraActiveRequests.setVolumeGroupName("volumeGroupInstanceNameTest");
72         infraActiveRequests.setNetworkId(UUID.randomUUID().toString());
73         infraActiveRequests.setNetworkName("networkInstanceNameTest");
74         infraActiveRequests.setConfigurationId(UUID.randomUUID().toString());
75         infraActiveRequests.setConfigurationName("configurationInstanceNameTest");
76         infraActiveRequests.setAicCloudRegion("1");
77         infraActiveRequests.setTenantId(UUID.randomUUID().toString());
78         infraActiveRequests.setRequestScope("operationalEnvironment");
79         infraActiveRequests.setRequestorId(UUID.randomUUID().toString());
80         infraActiveRequests.setSource("sourceTest");
81         infraActiveRequests.setOperationalEnvName(UUID.randomUUID().toString());
82         infraActiveRequests.setRequestStatus("IN_PROGRESS");
83         infraActiveRequests.setAction("create");
84         infraActiveRequests.setRequestAction("someaction");
85         infraActiveRequests.setStartTime(new Timestamp(System.currentTimeMillis()));
86         infraActiveRequests
87                 .setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
88         List<CloudApiRequests> cloudApiRequests = new ArrayList<>();
89         CloudApiRequests cloudRequest = new CloudApiRequests();
90         cloudRequest.setCloudIdentifier("heatstackanme/id");
91         cloudRequest.setId(1);
92         cloudRequest.setRequestBody("requestBody");
93         cloudRequest.setRequestId(infraActiveRequests.getRequestId());
94         cloudApiRequests.add(cloudRequest);
95         infraActiveRequests.setCloudApiRequests(cloudApiRequests);
96         requestsDbClient.save(infraActiveRequests);
97
98         InfraActiveRequests infraActiveRequests2 = new InfraActiveRequests();
99         infraActiveRequests2.setRequestId(UUID.randomUUID().toString());
100         infraActiveRequests2.setOperationalEnvId(UUID.randomUUID().toString());
101         infraActiveRequests2.setServiceInstanceId(UUID.randomUUID().toString());
102         infraActiveRequests2.setServiceInstanceName("serviceInstanceNameTest");
103         infraActiveRequests2.setVnfId(UUID.randomUUID().toString());
104         infraActiveRequests2.setVnfName("vnfInstanceNameTest");
105         infraActiveRequests2.setVfModuleId(UUID.randomUUID().toString());
106         infraActiveRequests2.setVfModuleName("vfModuleInstanceNameTest");
107         infraActiveRequests2.setVolumeGroupId(UUID.randomUUID().toString());
108         infraActiveRequests2.setVolumeGroupName("volumeGroupInstanceNameTest");
109         infraActiveRequests2.setNetworkId(UUID.randomUUID().toString());
110         infraActiveRequests2.setNetworkName("networkInstanceNameTest");
111         infraActiveRequests2.setConfigurationId(UUID.randomUUID().toString());
112         infraActiveRequests2.setConfigurationName("configurationInstanceNameTest");
113         infraActiveRequests2.setAicCloudRegion("1");
114         infraActiveRequests2.setTenantId(UUID.randomUUID().toString());
115         infraActiveRequests2.setRequestScope("operationalEnvironment");
116         infraActiveRequests2.setRequestorId(UUID.randomUUID().toString());
117         infraActiveRequests2.setSource("sourceTest");
118         infraActiveRequests2.setOperationalEnvName(UUID.randomUUID().toString());
119         infraActiveRequests2.setRequestStatus("IN_PROGRESS");
120         infraActiveRequests2.setAction("create");
121         infraActiveRequests2.setRequestAction("someaction");
122         infraActiveRequests2.setStartTime(new Timestamp(System.currentTimeMillis()));
123         infraActiveRequests
124                 .setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
125     }
126
127     private void verifyOperationStatus(OperationStatus request, OperationStatus response) {
128         assertThat(request, sameBeanAs(response).ignoring("operateAt").ignoring("finishedAt"));
129     }
130
131
132     private void verifyInfraActiveRequests(InfraActiveRequests infraActiveRequestsResponse) {
133         assertThat(infraActiveRequestsResponse, sameBeanAs(infraActiveRequests).ignoring("modifyTime").ignoring("log")
134                 .ignoring("cloudApiRequests.created").ignoring("cloudApiRequests.id"));
135     }
136
137     @Test
138     public void getCloudOrchestrationFiltersFromInfraActiveTest() {
139         Map<String, String> requestMap = new HashMap<>();
140         requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId());
141         requestMap.put("operationalEnvironmentName", infraActiveRequests.getOperationalEnvName());
142         requestMap.put("resourceType", "operationalEnvironment");
143
144         List<InfraActiveRequests> iarr = requestsDbClient.getCloudOrchestrationFiltersFromInfraActive(requestMap);
145
146         assertEquals(1, iarr.size());
147         InfraActiveRequests infraActiveRequestsResponse = iarr.get(0);
148         verifyInfraActiveRequests(infraActiveRequestsResponse);
149     }
150
151     @Test
152     public void checkVnfIdStatusTest() {
153         InfraActiveRequests infraActiveRequestsResponse =
154                 requestsDbClient.checkVnfIdStatus(infraActiveRequests.getOperationalEnvId());
155         verifyInfraActiveRequests(infraActiveRequestsResponse);
156         assertNull(requestsDbClient.checkVnfIdStatus(UUID.randomUUID().toString()));
157     }
158
159     @Test
160     public void checkInstanceNameDuplicateTest() {
161         InfraActiveRequests infraActiveRequestsResponse = requestsDbClient.checkInstanceNameDuplicate(null,
162                 infraActiveRequests.getOperationalEnvName(), infraActiveRequests.getRequestScope());
163
164         verifyInfraActiveRequests(infraActiveRequestsResponse);
165     }
166
167     @Test
168     public void checkInstanceNameDuplicateViaTest() {
169         Map<String, String> requestMap = new HashMap<>();
170         requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId());
171
172         InfraActiveRequests infraActiveRequestsResponse = requestsDbClient.checkInstanceNameDuplicate(
173                 (HashMap<String, String>) requestMap, null, infraActiveRequests.getRequestScope());
174
175         verifyInfraActiveRequests(infraActiveRequestsResponse);
176     }
177
178     @Test
179     public void getOrchestrationFiltersFromInfraActiveTest() {
180         Map<String, List<String>> requestMap = new HashMap<>();
181         List<String> values = new ArrayList<>();
182         values.add("EQUALS");
183         values.add(infraActiveRequests.getServiceInstanceId());
184         requestMap.put("serviceInstanceId", values);
185
186         values = new ArrayList<>();
187         values.add("EQUALS");
188         values.add(infraActiveRequests.getServiceInstanceName());
189         requestMap.put("serviceInstanceName", values);
190
191         List<InfraActiveRequests> iaar = requestsDbClient.getOrchestrationFiltersFromInfraActive(requestMap);
192
193         assertEquals(1, iaar.size());
194         InfraActiveRequests infraActiveRequestsResponse = iaar.get(0);
195
196         verifyInfraActiveRequests(infraActiveRequestsResponse);
197         values = new ArrayList<>();
198         values.add("EQUALS");
199         values.add(UUID.randomUUID().toString());
200         requestMap.put("serviceInstanceName", values);
201         requestsDbClient.getOrchestrationFiltersFromInfraActive(requestMap);
202     }
203
204     @Test
205     public void getInfraActiveRequestbyRequestIdTest() {
206         InfraActiveRequests infraActiveRequestsResponse =
207                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
208         verifyInfraActiveRequests(infraActiveRequestsResponse);
209         infraActiveRequestsResponse =
210                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
211
212         assertNull(requestsDbClient.getInfraActiveRequestbyRequestId(UUID.randomUUID().toString()));
213     }
214
215     @Test
216     public void getInfraActiveRequestbyRequestIdWhereRequestUrlNullTest() {
217         // requestUrl setup to null and save
218         infraActiveRequests.setRequestUrl(null);
219         requestsDbClient.updateInfraActiveRequests(infraActiveRequests);
220         InfraActiveRequests infraActiveRequestsResponse =
221                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
222         verifyInfraActiveRequests(infraActiveRequestsResponse);
223
224         assertNull(infraActiveRequestsResponse.getRequestUrl());
225     }
226
227     @Test
228     public void getOneByServiceIdAndOperationIdTest() {
229         OperationStatus operationStatus = new OperationStatus();
230         operationStatus.setProgress("IN_PROGRESS");
231         operationStatus.setResult("FAILED");
232         operationStatus.setServiceId(UUID.randomUUID().toString());
233         operationStatus.setOperationContent("operation-content");
234         operationStatus.setOperation("operation");
235         operationStatus.setOperationId(UUID.randomUUID().toString());
236         operationStatus.setReason("reason-test");
237         operationStatus.setUserId(UUID.randomUUID().toString());
238         operationStatus.setServiceName("test-service");
239         requestsDbClient.save(operationStatus);
240
241         OperationStatus operationStatusResponse = requestsDbClient
242                 .getOneByServiceIdAndOperationId(operationStatus.getServiceId(), operationStatus.getOperationId());
243
244         verifyOperationStatus(operationStatus, operationStatusResponse);
245
246         assertNull(requestsDbClient.getOneByServiceIdAndOperationId(UUID.randomUUID().toString(),
247                 operationStatus.getOperationId()));
248     }
249
250
251     @Test
252     public void getRequestProcessingDataBySoRequestIdTest() {
253         List<RequestProcessingData> requestProcessingDataList =
254                 requestsDbClient.getRequestProcessingDataBySoRequestId("00032ab7-na18-42e5-965d-8ea592502018");
255         assertNotNull(requestProcessingDataList);
256         assertFalse(requestProcessingDataList.isEmpty());
257         assertEquals(2, requestProcessingDataList.size());
258     }
259
260
261     @Test
262     public void findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestIdTest() {
263         OperationalEnvServiceModelStatus operationalEnvServiceModelStatus =
264                 requestsDbClient.findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId("1234", "TEST1234",
265                         "00032ab7-3fb3-42e5-965d-8ea592502017");
266         assertNotNull(operationalEnvServiceModelStatus);
267         assertEquals("1234", operationalEnvServiceModelStatus.getOperationalEnvId());
268         assertEquals("TEST1234", operationalEnvServiceModelStatus.getServiceModelVersionId());
269
270         OperationalEnvServiceModelStatus operationalEnvServiceModelStatus1 =
271                 requestsDbClient.findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId("1234", "TEST1235",
272                         "00032ab7-3fb3-42e5-965d-8ea592502018");
273         assertNotNull(operationalEnvServiceModelStatus1);
274         assertEquals("00032ab7-3fb3-42e5-965d-8ea592502018", operationalEnvServiceModelStatus1.getRequestId());
275         assertEquals("1234", operationalEnvServiceModelStatus1.getOperationalEnvId());
276         assertEquals("TEST1235", operationalEnvServiceModelStatus1.getServiceModelVersionId());
277     }
278
279     @Test
280     public void getAllByOperationalEnvIdAndRequestId() {
281         List<OperationalEnvServiceModelStatus> operationalEnvServiceModelStatuses =
282                 requestsDbClient.getAllByOperationalEnvIdAndRequestId("1234", "00032ab7-3fb3-42e5-965d-8ea592502017");
283         assertNotNull(operationalEnvServiceModelStatuses);
284         assertFalse(operationalEnvServiceModelStatuses.isEmpty());
285         assertEquals(2, operationalEnvServiceModelStatuses.size());
286     }
287
288     @Test
289     public void getDistributionStatusByIdTest() {
290         OperationalEnvDistributionStatus operationalEnvDistributionStatus =
291                 requestsDbClient.getDistributionStatusById("111");
292         assertNotNull(operationalEnvDistributionStatus);
293         assertEquals("111", operationalEnvDistributionStatus.getDistributionId());
294         assertEquals("ERROR", operationalEnvDistributionStatus.getDistributionIdErrorReason());
295         assertEquals("00032ab7-3fb3-42e5-965d-8ea592502017", operationalEnvDistributionStatus.getRequestId());
296     }
297
298     @Test
299     public void getRequestProcessingDataBySoRequestIdAndName() {
300         RequestProcessingData requestProcessingData = requestsDbClient
301                 .getRequestProcessingDataBySoRequestIdAndNameAndGrouping("00032ab7-na18-42e5-965d-8ea592502018",
302                         "requestAction", "7d2e8c07-4d10-456d-bddc-37abf38ca714");
303         assertNotNull(requestProcessingData);
304
305     }
306
307     @Test
308     public void getInfraActiveRequestbyRequestId_Filters_Test() {
309         Map<String, String[]> filters = new HashMap<>();
310         filters.put("requestStatus", new String[] {"EQ", "IN_PROGRESS"});
311         filters.put("action", new String[] {"EQ", "create"});
312         filters.put("serviceInstanceId", new String[] {"EQ", infraActiveRequests.getServiceInstanceId()});
313         List<InfraActiveRequests> infraActiveRequestsResponse = requestsDbClient.getRequest(filters);
314
315         verifyInfraActiveRequests(infraActiveRequestsResponse.get(0));
316     }
317 }