Containerization feature of SO
[so.git] / adapters / mso-requests-db-adapter / src / test / java / org / onap / so / adapters / requestsdb / adapters / MSORequestDBImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 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.adapters;
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.fail;
27
28 import java.util.ArrayList;
29 import java.util.List;
30
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.junit.rules.ExpectedException;
34 import org.junit.runner.RunWith;
35 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
36 import org.onap.so.adapters.requestsdb.RequestStatusType;
37 import org.onap.so.adapters.requestsdb.application.MSORequestDBApplication;
38 import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
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.ResourceOperationStatus;
42 import org.onap.so.db.request.data.repository.OperationStatusRepository;
43 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
44 import org.onap.so.requestsdb.RequestsDbConstant;
45 import org.springframework.beans.factory.annotation.Autowired;
46 import org.springframework.boot.context.embedded.LocalServerPort;
47 import org.springframework.boot.test.context.SpringBootTest;
48 import org.springframework.test.context.ActiveProfiles;
49 import org.springframework.test.context.junit4.SpringRunner;
50
51 @RunWith(SpringRunner.class)
52 @SpringBootTest(classes = MSORequestDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
53 @ActiveProfiles("test")
54 public class MSORequestDBImplTest {
55
56         @LocalServerPort
57         private int port;
58         
59         @Autowired
60         private MsoRequestsDbAdapter dbAdapter;
61                 
62     @Autowired
63     private OperationStatusRepository operationStatusRepository;
64     
65     @Autowired
66     private ResourceOperationStatusRepository resourceOperationStatusRepo;
67
68     @Rule
69     public ExpectedException thrown = ExpectedException.none();
70     
71         public InfraActiveRequests setupTestEntities()   {      
72                 return buildTestRequest();
73         }       
74
75         private InfraActiveRequests buildTestRequest() {        
76                 InfraActiveRequests testRequest= new InfraActiveRequests();
77                 testRequest.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");       
78                 testRequest.setClientRequestId("00032ab7-3fb3-42e5-965d-8ea592502016");
79                 testRequest.setRequestStatus("COMPLETE");
80                 testRequest.setStatusMessage("Vf Module has been deleted successfully.");
81                 testRequest.setProgress((long) 100);
82                 testRequest.setSource("VID");           
83                 testRequest.setTenantId("6accefef3cb442ff9e644d589fb04107");
84                 testRequest.setServiceInstanceId("e3b5744d-2ad1-4cdd-8390-c999a38829bc");
85                 testRequest.setRequestAction("deleteInstance");
86                 testRequest.setRequestScope("vfModule");
87                 testRequest.setAction("deleteInstance");
88                 testRequest.setAicCloudRegion("mtn6");
89                 testRequest.setLastModifiedBy("BPMN");
90                 testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
91                 testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
92                 testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
93                 
94                 return testRequest;
95         }
96
97         
98
99
100         @Test
101         public void getByRequestId() throws MsoRequestsDbException  {
102                 InfraActiveRequests testRequest = setupTestEntities();
103                 // Given
104                 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
105                 
106                 // When
107                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
108                 if(infraRequest ==null)
109                          fail("Null infraRequest");
110                 
111                 // Then
112                 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));             
113         }
114         
115         
116         @Test
117         public void getByInvalidRequestId() throws MsoRequestsDbException  {            
118                 // Given
119                 String requestId = "invalidRequestId";
120
121                 try {
122                         dbAdapter.getInfraRequest(requestId);
123                         fail("Expected MsoRequestsDbException to be thrown");
124                 } catch (MsoRequestsDbException e) {
125                         assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
126                 } catch (Exception e) {
127                         fail("Expected MsoRequestsDbException to be thrown, unknown exception thrown");
128                 }               
129         }
130         
131         @Test
132         public void getByClientRequestId() throws MsoRequestsDbException  {
133                 InfraActiveRequests testRequest = setupTestEntities();
134                 // Given
135                 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
136                 
137                 // When
138                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
139                 if(infraRequest ==null)
140                          fail("Null infraRequest");
141                 
142                 // Then
143                 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));             
144         }
145         
146         
147         @Test
148         public void updateInfraRequest() throws MsoRequestsDbException  {
149                 InfraActiveRequests testRequest = setupTestEntities();
150                 // Given
151                 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
152                         
153
154                 // When
155                 String lastModifiedBy = "UNIT TEST";
156                 String statusMessage = "TESTING THE UDPATES";
157                 String progress = "50";
158                 String vnfOutputs = "VNF OUTPUTS";              
159                 String networkId = "New NetworkID";
160                 String vnfId = "NEWVNFID";
161                 String volumeGroupId = "NewVolumeGroupId";
162                 String serviceInstanceName = "NewServiceInstanceName";
163                 String configurationId = "NewConfigurationId";
164                 String configurationName = "NewConfigurationName";
165                 String vfModuleName = "VFModuleName";
166                 RequestStatusType requestStatus = RequestStatusType.COMPLETE ;
167                 String responseBody = "NewResponseBody";
168                 String vfModuleId = "NEW VF MODULEID";  
169                 String serviceInstanceId = " new serv ind";
170                 
171                 
172                 testRequest.setVolumeGroupId(volumeGroupId);
173                 testRequest.setServiceInstanceName(serviceInstanceName);
174                 testRequest.setConfigurationId(configurationId);
175                 testRequest.setConfigurationName(configurationName);
176                 testRequest.setNetworkId(networkId);
177                 testRequest.setResponseBody(responseBody);
178                 testRequest.setStatusMessage(statusMessage);
179                 testRequest.setProgress((long) 50);
180                 testRequest.setServiceInstanceId(lastModifiedBy);
181                 testRequest.setLastModifiedBy(lastModifiedBy);
182                 testRequest.setVfModuleId(vfModuleId);
183                 testRequest.setVfModuleName(vfModuleName);
184                 testRequest.setVnfId(vnfId);
185                 testRequest.setServiceInstanceId(serviceInstanceId);
186                 testRequest.setVfModuleName(vfModuleName);
187                 testRequest.setVnfOutputs(vnfOutputs);
188                                 
189                 
190                  dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
191                  lastModifiedBy,
192                  statusMessage,
193                  responseBody,
194                  requestStatus,
195                  progress,
196                  vnfOutputs,
197                  serviceInstanceId,
198                  networkId,
199                  vnfId,
200                  vfModuleId,
201                  volumeGroupId,
202                  serviceInstanceName,
203                  configurationId,
204                  configurationName,
205                  vfModuleName);
206                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
207                 // Then
208                 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));             
209         }
210         
211         @Test
212         public void UpdateByInvalidRequestId() throws MsoRequestsDbException  {         
213                 // Given
214                 String requestId = "invalidRequestId";
215
216                 try {
217                         dbAdapter.updateInfraRequest ( requestId,
218                                         null,
219                                         null,
220                                         null,
221                                         null,
222                                         null,
223                                         null,
224                                         null,
225                                         null,
226                                         null,
227                                         null,
228                                         null,
229                                         null,
230                                         null,
231                                         null,
232                                         null);
233                         fail("Expected MsoRequestsDbException to be thrown");
234                 } catch (MsoRequestsDbException e) {
235                         assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
236                 } catch (Exception e) {
237                         fail("Expected MsoRequestsDbException to be thrown, unknown exception thrown");
238                 }               
239         }
240         
241         
242         @Test
243         public void updateInfraRequestNulls() throws MsoRequestsDbException  {
244                 InfraActiveRequests testRequest = setupTestEntities();
245                 // Given
246                 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
247
248                 // When
249                 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
250                                 testRequest.getLastModifiedBy(),
251                                 null,
252                                 null,
253                                 null,
254                                 null,
255                                 null,
256                                 null,
257                                 null,
258                                 null,
259                                 null,
260                                 null,
261                                 null,
262                                 null,
263                                 null,
264                                 null);
265                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
266                 // Then
267                 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));             
268         }
269         
270         @Test
271         public void getSiteStatusNotDisabled() throws MsoRequestsDbException  {
272                 setupTestEntities();
273                 // Given
274                 String siteName = "siteName";
275                 
276                 // When
277                 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
278                 
279                 // Then
280                 assertEquals(siteDisabled, true);               
281         }
282         
283         @Test
284         public void getSiteStatusDisabled() throws MsoRequestsDbException  {
285                 setupTestEntities();
286                 // Given
287                 String siteName = "testSite";
288                 
289                 // When
290                 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
291                 
292                 // Then
293                 assertEquals(siteDisabled, false);              
294         }
295         
296         @Test 
297         public void updateServiceOperation() throws MsoRequestsDbException{
298                 String serviceId = "serviceid";
299                 String operationId = "operationid";
300                 String serviceName = "servicename";
301                 String operation = "newOperationType";
302                 String userId = "NewUserId";
303                 String result = "NewResult";
304                 String operationContent = "newOperationContent";
305                 String progress = "Newprogress";
306                 String reason = "NewReason";            
307                 
308                 OperationStatus updatedOperationStatus = new OperationStatus();
309                 
310                 
311                 
312                 updatedOperationStatus.setServiceId(serviceId);
313                 updatedOperationStatus.setServiceName(serviceName);
314                 updatedOperationStatus.setOperationId(operationId);
315                 updatedOperationStatus.setOperation(operation);
316                 updatedOperationStatus.setUserId(userId);
317                 updatedOperationStatus.setResult(result);
318                 updatedOperationStatus.setProgress(progress);
319                 updatedOperationStatus.setReason(reason);
320                 updatedOperationStatus.setOperationContent(operationContent);
321                 
322                 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation,  userId,
323                      result, operationContent,  progress, reason);              
324                 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);         
325                 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));        
326         }
327         
328         
329         @Test 
330         public void updateServiceOperation_Not_Found() throws MsoRequestsDbException{
331                 String serviceId = "badserviceId";
332                 String operationId = "operationid";
333                 String operation = "newOperationType";
334                 String userId = "NewUserId";
335                 String result = "NewResult";
336                 String operationContent = "newOperationContent";
337                 String progress = "Newprogress";
338                 String reason = "NewReason";            
339                 
340                 OperationStatus updatedOperationStatus = new OperationStatus();
341                 
342                 
343                 
344                 updatedOperationStatus.setServiceId(serviceId);
345                 updatedOperationStatus.setOperationId(operationId);
346                 updatedOperationStatus.setOperation(operation);
347                 updatedOperationStatus.setUserId(userId);
348                 updatedOperationStatus.setResult(result);
349                 updatedOperationStatus.setProgress(progress);
350                 updatedOperationStatus.setReason(reason);
351                 updatedOperationStatus.setOperationContent(operationContent);
352                 
353                 thrown.expect(MsoRequestsDbException.class);
354                 thrown.expectMessage("Unable to retrieve OperationStatus Object ServiceId: " + serviceId + " operationId: " + operationId);
355                 
356                 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation,  userId,
357                      result, operationContent,  progress, reason);              
358                 
359         }
360         
361         @Test 
362         public void initResourceOperationStatus() throws MsoRequestsDbException{
363                 String resourceTemplateUUIDs = "template1:template2:template3:";
364                 String serviceId = "serviceId";
365                 String operationId = "operationId";
366                 String operationType = "operationType";
367                 
368              ResourceOperationStatus resource1 = new ResourceOperationStatus();
369              resource1.setOperationId(operationId);
370              resource1.setServiceId(serviceId);
371              resource1.setResourceTemplateUUID("template1");
372              resource1.setOperType(operationType);
373              resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
374              resource1.setStatusDescription("Waiting for start");
375          
376          ResourceOperationStatus resource2 = new ResourceOperationStatus();
377          resource2.setOperationId(operationId);
378          resource2.setServiceId(serviceId);
379          resource2.setResourceTemplateUUID("template2");
380          resource2.setOperType(operationType);
381          resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
382          resource2.setStatusDescription("Waiting for start");
383          
384          ResourceOperationStatus resource3 = new ResourceOperationStatus();
385          resource3.setOperationId(operationId);
386          resource3.setServiceId(serviceId);
387          resource3.setResourceTemplateUUID("template3");
388          resource3.setOperType(operationType);
389          resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
390          resource3.setStatusDescription("Waiting for start");
391          
392          List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
393          expectedResult.add(resource1);
394          expectedResult.add(resource2);
395          expectedResult.add(resource3);
396                 
397                 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);             
398                 List<ResourceOperationStatus> testList = resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId,operationId);              
399                 assertThat(testList, sameBeanAs(expectedResult));       
400         }
401
402         @Test
403         public void getResourceOperationStatus() throws MsoRequestsDbException{
404                 String resourceTemplateUUIDs = "template1";
405                 String serviceId = "serviceId";
406                 String operationId = "operationId";
407                 String operationType = "operationType";
408
409                 ResourceOperationStatus resource1 = new ResourceOperationStatus();
410                 resource1.setOperationId(operationId);
411                 resource1.setServiceId(serviceId);
412                 resource1.setResourceTemplateUUID("template1");
413                 resource1.setOperType(operationType);
414                 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
415                 resource1.setStatusDescription("Waiting for start");
416
417
418                 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
419
420                 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
421                 assertThat(actualResource, sameBeanAs(resource1));
422         }
423
424         @Test
425         public void updateResourceOperationStatus() throws MsoRequestsDbException{
426                 String resourceTemplateUUID = "template1";
427                 String serviceId = "serviceId";
428                 String operationId = "operationId";
429                 String operationType = "operationType";
430                 String resourceInstanceID = "resourceInstanceID";
431                 String jobId = "jobId";
432                 String status = RequestsDbConstant.Status.FINISHED;
433                 String progress = "50";
434                 String errorCode = "errorCode";
435                 String statusDescription = "statusDescription";
436
437
438                 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
439                 expectedResource.setOperationId(operationId);
440                 expectedResource.setServiceId(serviceId);
441                 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
442                 expectedResource.setOperType(operationType);
443                 expectedResource.setJobId(jobId);
444                 expectedResource.setErrorCode(errorCode);
445                 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
446                 expectedResource.setStatusDescription(statusDescription);
447                 expectedResource.setProgress(progress);
448                 expectedResource.setResourceInstanceID(resourceInstanceID);
449
450
451                 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID,
452                                 operationType, resourceInstanceID, jobId, status, progress,
453                                 errorCode, statusDescription);
454
455                 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
456                 assertThat(actualResource, sameBeanAs(expectedResource));
457         }
458
459
460 }