replace all fixed wiremock ports
[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.assertNotNull;
27 import static org.junit.Assert.fail;
28
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.Map;
32
33 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
34 import org.junit.Before;
35 import org.junit.Rule;
36 import org.junit.Test;
37 import org.junit.rules.ExpectedException;
38 import org.onap.logging.ref.slf4j.ONAPLogConstants;
39 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
40 import org.onap.so.adapters.requestsdb.RequestStatusType;
41 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
42 import org.onap.so.adapters.requestsdb.application.TestAppender;
43 import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
44 import org.onap.so.db.request.beans.InfraActiveRequests;
45 import org.onap.so.db.request.beans.OperationStatus;
46 import org.onap.so.db.request.beans.ResourceOperationStatus;
47 import org.onap.so.db.request.data.repository.OperationStatusRepository;
48 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
49 import org.onap.so.requestsdb.RequestsDbConstant;
50 import org.springframework.beans.factory.annotation.Autowired;
51 import org.springframework.boot.web.server.LocalServerPort;
52
53 import ch.qos.logback.classic.spi.ILoggingEvent;
54
55 public class MSORequestDBImplTest extends RequestsAdapterBase {
56
57         @LocalServerPort
58         private int port;
59
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         @Before
76         public void before() throws MsoRequestsDbException{
77         JaxWsProxyFactoryBean jaxWsProxyFactory = new JaxWsProxyFactoryBean();
78         jaxWsProxyFactory.setServiceClass(MsoRequestsDbAdapter.class);
79         jaxWsProxyFactory.setAddress("http://localhost:" + port + "/services/RequestsDbAdapter");
80         jaxWsProxyFactory.setUsername("bpel");
81         jaxWsProxyFactory.setPassword("mso-db-1507!");
82         dbAdapter = (MsoRequestsDbAdapter) jaxWsProxyFactory.create();
83         
84         InfraActiveRequests testRequest = this.buildTestRequest();
85
86         dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
87                         testRequest.getLastModifiedBy(),
88                         testRequest.getStatusMessage(),
89                         testRequest.getResponseBody(),
90                         RequestStatusType.valueOf(testRequest.getRequestStatus()),
91                         testRequest.getProgress().toString(),
92                         testRequest.getVnfOutputs(),
93                         testRequest.getServiceInstanceId(),
94                         testRequest.getNetworkId(),
95                         testRequest.getVnfId(),
96                         testRequest.getVfModuleId(),
97                         testRequest.getVolumeGroupId(),
98                         testRequest.getServiceInstanceName(),
99                 testRequest.getConfigurationId(),
100                 testRequest.getConfigurationName(),
101                 testRequest.getVfModuleName());
102         
103         
104         }
105
106         private InfraActiveRequests buildTestRequest() {        
107                 InfraActiveRequests testRequest= new InfraActiveRequests();
108                 testRequest.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");       
109                 testRequest.setClientRequestId("00032ab7-3fb3-42e5-965d-8ea592502016");
110                 testRequest.setRequestStatus("COMPLETE");
111                 testRequest.setStatusMessage("Vf Module has been deleted successfully.");
112                 testRequest.setProgress((long) 100);
113                 testRequest.setSource("VID");           
114                 testRequest.setTenantId("6accefef3cb442ff9e644d589fb04107");
115                 testRequest.setServiceInstanceId("e3b5744d-2ad1-4cdd-8390-c999a38829bc");
116                 testRequest.setRequestAction("deleteInstance");
117                 testRequest.setRequestScope("vfModule");
118                 testRequest.setAction("deleteInstance");
119                 testRequest.setAicCloudRegion("mtn6");
120                 testRequest.setLastModifiedBy("BPMN");
121                 testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
122                 testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
123                 testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
124                 testRequest.setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");      
125                 testRequest.setVolumeGroupId("volumeGroupId");
126                 testRequest.setServiceInstanceName("serviceInstanceName");
127                 testRequest.setConfigurationId("configurationId");
128                 testRequest.setConfigurationName("configurationName");
129                 testRequest.setNetworkId("networkId");
130                 testRequest.setResponseBody("responseBody");
131                 testRequest.setVfModuleName("vfModuleName");
132                 testRequest.setVnfOutputs("vnfOutputs");
133                 return testRequest;
134         }
135
136         @Test
137         public void getByRequestId() throws MsoRequestsDbException  {
138             
139                 InfraActiveRequests testRequest = setupTestEntities();
140                 // Given
141                 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
142                 
143                 // When
144                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
145                 if(infraRequest ==null)
146                          fail("Null infraRequest");
147                 
148                 // Then
149                 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));             
150         }
151         
152         
153         @Test
154         public void getByInvalidRequestId() throws MsoRequestsDbException  {            
155                 // Given
156                 String requestId = "invalidRequestId";
157
158                 try {
159                         dbAdapter.getInfraRequest(requestId);
160                         fail("Expected MsoRequestsDbException to be thrown");
161                 } catch (Exception e) {
162                     assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
163                 }               
164         }
165         
166         @Test
167         public void getByClientRequestId() throws MsoRequestsDbException  {
168                 InfraActiveRequests testRequest = setupTestEntities();
169                 // Given
170                 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
171                 
172                 // When
173                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
174                 if(infraRequest ==null)
175                          fail("Null infraRequest");
176                 
177                 // Then
178                 assertEquals(clientRequestId, infraRequest.getClientRequestId());
179         }
180         
181         
182         @Test
183         public void updateInfraRequest() throws MsoRequestsDbException  {
184                 InfraActiveRequests testRequest = setupTestEntities();
185                 // Given
186                 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
187                         
188
189                 // When
190                 String lastModifiedBy = "UNIT TEST";
191                 String statusMessage = "TESTING THE UDPATES";
192                 String progress = "50";
193                 String vnfOutputs = "VNF OUTPUTS";              
194                 String networkId = "New NetworkID";
195                 String vnfId = "NEWVNFID";
196                 String volumeGroupId = "NewVolumeGroupId";
197                 String serviceInstanceName = "NewServiceInstanceName";
198                 String configurationId = "NewConfigurationId";
199                 String configurationName = "NewConfigurationName";
200                 String vfModuleName = "VFModuleName";
201                 RequestStatusType requestStatus = RequestStatusType.COMPLETE ;
202                 String responseBody = "NewResponseBody";
203                 String vfModuleId = "NEW VF MODULEID";  
204                 String serviceInstanceId = " new serv ind";
205                 
206                 
207                 testRequest.setVolumeGroupId(volumeGroupId);
208                 testRequest.setServiceInstanceName(serviceInstanceName);
209                 testRequest.setConfigurationId(configurationId);
210                 testRequest.setConfigurationName(configurationName);
211                 testRequest.setNetworkId(networkId);
212                 testRequest.setResponseBody(responseBody);
213                 testRequest.setStatusMessage(statusMessage);
214                 testRequest.setProgress((long) 50);
215                 testRequest.setServiceInstanceId(lastModifiedBy);
216                 testRequest.setLastModifiedBy(lastModifiedBy);
217                 testRequest.setVfModuleId(vfModuleId);
218                 testRequest.setVfModuleName(vfModuleName);
219                 testRequest.setVnfId(vnfId);
220                 testRequest.setServiceInstanceId(serviceInstanceId);
221                 testRequest.setVfModuleName(vfModuleName);
222                 testRequest.setVnfOutputs(vnfOutputs);
223                                 
224                 
225                  dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
226                  lastModifiedBy,
227                  statusMessage,
228                  responseBody,
229                  requestStatus,
230                  progress,
231                  vnfOutputs,
232                  serviceInstanceId,
233                  networkId,
234                  vnfId,
235                  vfModuleId,
236                  volumeGroupId,
237                  serviceInstanceName,
238                  configurationId,
239                  configurationName,
240                  vfModuleName);
241                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
242                 // Then
243                 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));             
244         
245                 
246         }
247         
248         @Test
249         public void UpdateByInvalidRequestId() throws MsoRequestsDbException  {         
250                 // Given
251                 String requestId = "invalidRequestId";
252
253                 try {
254                         dbAdapter.updateInfraRequest ( requestId,
255                                         null,
256                                         null,
257                                         null,
258                                         null,
259                                         null,
260                                         null,
261                                         null,
262                                         null,
263                                         null,
264                                         null,
265                                         null,
266                                         null,
267                                         null,
268                                         null,
269                                         null);
270                         fail("Expected MsoRequestsDbException to be thrown");   
271                 } catch (Exception e) {
272                     assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
273                 }               
274         }
275         
276         
277         @Test
278         public void updateInfraRequestNulls() throws MsoRequestsDbException  {
279                 InfraActiveRequests testRequest = setupTestEntities();
280                 // Given
281                 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
282
283                 // When
284                 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
285                                 testRequest.getLastModifiedBy(),
286                                 null,
287                                 null,
288                                 null,
289                                 null,
290                                 null,
291                                 null,
292                                 null,
293                                 null,
294                                 null,
295                                 null,
296                                 null,
297                                 null,
298                                 null,
299                                 null);
300                 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
301                 // Then
302                 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));             
303         }
304         
305         @Test
306         public void getSiteStatusNotDisabled() throws MsoRequestsDbException  {
307                 setupTestEntities();
308                 // Given
309                 String siteName = "siteName";
310                 
311                 // When
312                 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
313                 
314                 // Then
315                 assertEquals(siteDisabled, true);               
316         }
317         
318         @Test
319         public void getSiteStatusDisabled() throws MsoRequestsDbException  {
320                 setupTestEntities();
321                 // Given
322                 String siteName = "testSite";
323                 
324                 // When
325                 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
326                 
327                 // Then
328                 assertEquals(siteDisabled, false);              
329         }
330         
331         @Test 
332         public void updateServiceOperation() throws MsoRequestsDbException{
333                 String serviceId = "serviceid";
334                 String operationId = "operationid";
335                 String serviceName = "servicename";
336                 String operation = "newOperationType";
337                 String userId = "NewUserId";
338                 String result = "NewResult";
339                 String operationContent = "newOperationContent";
340                 String progress = "Newprogress";
341                 String reason = "NewReason";            
342                 
343                 OperationStatus updatedOperationStatus = new OperationStatus();
344                 
345                 
346                 
347                 updatedOperationStatus.setServiceId(serviceId);
348                 updatedOperationStatus.setServiceName(serviceName);
349                 updatedOperationStatus.setOperationId(operationId);
350                 updatedOperationStatus.setOperation(operation);
351                 updatedOperationStatus.setUserId(userId);
352                 updatedOperationStatus.setResult(result);
353                 updatedOperationStatus.setProgress(progress);
354                 updatedOperationStatus.setReason(reason);
355                 updatedOperationStatus.setOperationContent(operationContent);
356                 
357                 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation,  userId,
358                      result, operationContent,  progress, reason);              
359                 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);         
360                 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));        
361         }
362         
363         
364         @Test 
365         public void updateServiceOperation_Not_Found() throws MsoRequestsDbException{
366             TestAppender.events.clear();
367                 String serviceId = "badserviceId";
368                 String operationId = "operationid";
369                 String operation = "newOperationType";
370                 String userId = "NewUserId";
371                 String result = "NewResult";
372                 String operationContent = "newOperationContent";
373                 String progress = "Newprogress";
374                 String reason = "NewReason";            
375                 
376                 OperationStatus updatedOperationStatus = new OperationStatus();
377                 
378                 
379                 
380                 updatedOperationStatus.setServiceId(serviceId);
381                 updatedOperationStatus.setOperationId(operationId);
382                 updatedOperationStatus.setOperation(operation);
383                 updatedOperationStatus.setUserId(userId);
384                 updatedOperationStatus.setResult(result);
385                 updatedOperationStatus.setProgress(progress);
386                 updatedOperationStatus.setReason(reason);
387                 updatedOperationStatus.setOperationContent(operationContent);
388
389                 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation,  userId,
390                      result, operationContent,  progress, reason);              
391                 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);         
392                 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));                
393         }
394         
395         @Test 
396         public void initResourceOperationStatus() throws MsoRequestsDbException{
397                 String resourceTemplateUUIDs = "template1:template2:template3:";
398                 String serviceId = "serviceId";
399                 String operationId = "operationId";
400                 String operationType = "operationType";
401                 
402              ResourceOperationStatus resource1 = new ResourceOperationStatus();
403              resource1.setOperationId(operationId);
404              resource1.setServiceId(serviceId);
405              resource1.setResourceTemplateUUID("template1");
406              resource1.setOperType(operationType);
407              resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
408              resource1.setStatusDescription("Waiting for start");
409          
410          ResourceOperationStatus resource2 = new ResourceOperationStatus();
411          resource2.setOperationId(operationId);
412          resource2.setServiceId(serviceId);
413          resource2.setResourceTemplateUUID("template2");
414          resource2.setOperType(operationType);
415          resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
416          resource2.setStatusDescription("Waiting for start");
417          
418          ResourceOperationStatus resource3 = new ResourceOperationStatus();
419          resource3.setOperationId(operationId);
420          resource3.setServiceId(serviceId);
421          resource3.setResourceTemplateUUID("template3");
422          resource3.setOperType(operationType);
423          resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
424          resource3.setStatusDescription("Waiting for start");
425          
426          List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
427          expectedResult.add(resource1);
428          expectedResult.add(resource2);
429          expectedResult.add(resource3);
430                 
431                 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);             
432                 List<ResourceOperationStatus> testList = resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId,operationId);              
433                 assertThat(testList, sameBeanAs(expectedResult));       
434         }
435
436         @Test
437         public void getResourceOperationStatus() throws MsoRequestsDbException{
438                 String resourceTemplateUUIDs = "template1";
439                 String serviceId = "serviceId";
440                 String operationId = "operationId";
441                 String operationType = "operationType";
442
443                 ResourceOperationStatus resource1 = new ResourceOperationStatus();
444                 resource1.setOperationId(operationId);
445                 resource1.setServiceId(serviceId);
446                 resource1.setResourceTemplateUUID("template1");
447                 resource1.setOperType(operationType);
448                 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
449                 resource1.setStatusDescription("Waiting for start");
450
451
452                 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
453
454                 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
455                 assertThat(actualResource, sameBeanAs(resource1));
456         }
457
458         @Test
459         public void updateResourceOperationStatus() throws MsoRequestsDbException{
460             TestAppender.events.clear();
461                 String resourceTemplateUUID = "template1";
462                 String serviceId = "serviceId";
463                 String operationId = "operationId";
464                 String operationType = "operationType";
465                 String resourceInstanceID = "resourceInstanceID";
466                 String jobId = "jobId";
467                 String status = RequestsDbConstant.Status.FINISHED;
468                 String progress = "50";
469                 String errorCode = "errorCode";
470                 String statusDescription = "statusDescription";
471
472
473                 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
474                 expectedResource.setOperationId(operationId);
475                 expectedResource.setServiceId(serviceId);
476                 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
477                 expectedResource.setOperType(operationType);
478                 expectedResource.setJobId(jobId);
479                 expectedResource.setErrorCode(errorCode);
480                 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
481                 expectedResource.setStatusDescription(statusDescription);
482                 expectedResource.setProgress(progress);
483                 expectedResource.setResourceInstanceID(resourceInstanceID);
484
485
486                 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID,
487                                 operationType, resourceInstanceID, jobId, status, progress,
488                                 errorCode, statusDescription);
489
490                 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
491                 assertThat(actualResource, sameBeanAs(expectedResource));
492                 
493                 for(ILoggingEvent logEvent : TestAppender.events)
494             if(logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingInInterceptor") &&
495                     logEvent.getMarker().getName().equals("ENTRY")
496                     ){
497                 Map<String,String> mdc = logEvent.getMDCPropertyMap();
498                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INSTANCE_UUID));
499                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
500                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
501                 assertEquals("",mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
502                 assertEquals("/services/RequestsDbAdapter",mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
503                 assertEquals("INPROGRESS",mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
504             }else if(logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingOutInterceptor") &&
505                     logEvent.getMarker().getName().equals("EXIT")){
506                 Map<String,String> mdc = logEvent.getMDCPropertyMap();
507                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
508                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
509                 assertEquals(null,mdc.get(ONAPLogConstants.MDCs.RESPONSE_CODE));
510                 assertEquals("",mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
511                 assertEquals("/services/RequestsDbAdapter",mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
512                 assertEquals("COMPLETED",mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
513             }
514         }
515
516
517 }