Fixed Sonar blocker issues 88/84088/3
authorr.bogacki <r.bogacki@samsung.com>
Wed, 3 Apr 2019 12:00:21 +0000 (14:00 +0200)
committerr.bogacki <r.bogacki@samsung.com>
Fri, 5 Apr 2019 05:37:33 +0000 (07:37 +0200)
Fixed blockers according to Sonar analysis.
Added tests for fixed issues.

Change-Id: I8e259147082d722961048454fae9484cc0d8b0a8
Issue-ID: SO-1734
Signed-off-by: Robert Bogacki <r.bogacki@samsung.com>
adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtilsTest.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorVnfmCreateJobTask.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/CustomWorkflowValidation.java

index f39962b..667753a 100644 (file)
@@ -71,6 +71,7 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
     public static final String VNF_ID = "vnf_id";
     public static final String VF_MODULE_ID = "vf_module_id";
     public static final String TEMPLATE_TYPE = "template_type";
+    public static final String MULTICLOUD_QUERY_BODY_NULL = "multicloudQueryBody is null";
     public static final List<String> MULTICLOUD_INPUTS =
             Arrays.asList(OOF_DIRECTIVES, SDNC_DIRECTIVES, USER_DIRECTIVES, TEMPLATE_TYPE);
 
@@ -296,11 +297,16 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
                 returnInfo.setStatusMessage(response.getStatusInfo().getReasonPhrase());
             } else if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) {
                 multicloudQueryBody = getQueryBody((java.io.InputStream)response.getEntity());
-                returnInfo.setCanonicalName(stackName + "/" + multicloudQueryBody.getWorkloadId());
-                returnInfo.setStatus(getHeatStatus(multicloudQueryBody.getWorkloadStatus()));
-                returnInfo.setStatusMessage(multicloudQueryBody.getWorkloadStatus());
-                if (logger.isDebugEnabled()) {
-                    logger.debug("Multicloud Create Response Body: " + multicloudQueryBody.toString());
+                if (multicloudQueryBody != null) {
+                    returnInfo.setCanonicalName(stackName + "/" + multicloudQueryBody.getWorkloadId());
+                    returnInfo.setStatus(getHeatStatus(multicloudQueryBody.getWorkloadStatus()));
+                    returnInfo.setStatusMessage(multicloudQueryBody.getWorkloadStatus());
+                    if (logger.isDebugEnabled()) {
+                        logger.debug("Multicloud Create Response Body: " + multicloudQueryBody.toString());
+                    }
+                } else {
+                    returnInfo.setStatus(HeatStatus.FAILED);
+                    returnInfo.setStatusMessage(MULTICLOUD_QUERY_BODY_NULL);
                 }
             } else {
                 returnInfo.setStatus(HeatStatus.FAILED);
@@ -543,7 +549,9 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
     }
 
     private HeatStatus mapResponseToHeatStatus(Response response) {
-        if (response.getStatusInfo().getStatusCode() == Response.Status.OK.getStatusCode()) {
+        if (response == null) {
+            return HeatStatus.FAILED;
+        } else if (response.getStatusInfo().getStatusCode() == Response.Status.OK.getStatusCode()) {
             return HeatStatus.CREATED;
         } else if (response.getStatusInfo().getStatusCode() == Response.Status.CREATED.getStatusCode()) {
             return HeatStatus.CREATED;
index fbe532d..41cb774 100644 (file)
@@ -4,8 +4,6 @@
  * ================================================================================
  * Copyright (C) 2019 Samsung Intellectual Property. All rights reserved.
  * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -23,6 +21,7 @@
 package org.onap.so.openstack.utils;
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
 import static com.github.tomakehurst.wiremock.client.WireMock.post;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.junit.Assert.assertEquals;
@@ -30,6 +29,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.when;
+import static org.onap.so.openstack.utils.MsoMulticloudUtils.MULTICLOUD_QUERY_BODY_NULL;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -96,6 +96,18 @@ public class MsoMulticloudUtilsTest extends BaseTest {
         assertTrue(HeatStatus.NOTFOUND == result.getStatus());
     }
 
+    @Test
+    public void queryStackWithNullMulticloudQueryBody() throws MsoException {
+        wireMockServer.stubFor(get(urlPathEqualTo("/api/multicloud/v1/CloudOwner/MTN13/infra_workload/instanceId"))
+            .willReturn(aResponse().withHeader("Content-Type", "application/json")
+                .withBody(CREATE_STACK_RESPONSE)
+                .withStatus(HttpStatus.SC_OK)));
+
+        StackInfo result = multicloudUtils.queryStack("MTN13", "CloudOwner", "TEST-tenant", "instanceId");
+        assertTrue(HeatStatus.FAILED == result.getStatus());
+        assertEquals(MULTICLOUD_QUERY_BODY_NULL, result.getStatusMessage());
+    }
+
     @Test(expected = VduException.class)
     public void updateVdu() throws MsoException {
         multicloudUtils.updateVdu(new CloudInfo(), "instanceId", new HashMap<>(), new  VduModelInfo(),
index 7a967d3..750b7ac 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2019 TechMahindra
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -130,13 +132,15 @@ public class AbstractCDSProcessingBBUtils implements CDSProcessingListener {
 
             //CDSProcessingListener cdsProcessingListener = new AbstractCDSProcessingBBUtils();
 
-            CDSProcessingClient cdsClient = new CDSProcessingClient(this);
-            CountDownLatch countDownLatch = cdsClient.sendRequest(executionServiceInput);
-
+            CDSProcessingClient cdsClient = null;
+            CountDownLatch countDownLatch;
             try {
+                cdsClient = new CDSProcessingClient(this);
+                countDownLatch = cdsClient.sendRequest(executionServiceInput);
                 countDownLatch.await(props.getTimeout(), TimeUnit.SECONDS);
             } catch (InterruptedException ex) {
                 logger.error("Caught exception in sendRequestToCDSClient in AbstractCDSProcessingBBUtils : ", ex);
+                Thread.currentThread().interrupt();
             } finally {
                 cdsClient.close();
             }
index b2812d9..161f879 100644 (file)
 
 package org.onap.so.client.cds;
 
-import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
 import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.exception.ExceptionBuilder;
 
-@RunWith(JUnit4.class)
+@RunWith(MockitoJUnitRunner.class)
 public class AbstractCDSProcessingBBUtilsTest {
     @InjectMocks
     private AbstractCDSProcessingBBUtils abstractCDSProcessingBBUtils = new AbstractCDSProcessingBBUtils();
     @InjectMocks
     AbstractCDSPropertiesBean abstractCDSPropertiesBean = new AbstractCDSPropertiesBean();
+    @Mock
+    ExceptionBuilder exceptionUtil;
 
-    @Test
-    public void preProcessRequestTest() throws Exception {
+    @Before
+    public void init(){
         String requestObject = "{\"config-assign-request\":{\"resolution-key\":\"resolutionKey\", \"config-assign-properties\":{\"service-instance-id\":\"serviceInstanceId\", \"vnf-id\":\"vnfId\", \"vnf-name\":\"vnfName\", \"service-model-uuid\":\"serviceModelUuid\", \"vnf-customization-uuid\":\"vnfCustomizationUuid\",\"Instance1\":\"Instance1Value\",\"Instance2\":\"Instance2Value\",\"Param3\":\"Param3Value\"}}}";
         String blueprintName = "blueprintName";
         String blueprintVersion = "blueprintVersion";
@@ -59,12 +67,28 @@ public class AbstractCDSProcessingBBUtilsTest {
         abstractCDSPropertiesBean.setRequestId(requestId);
         abstractCDSPropertiesBean.setRequestObject(requestObject);
         abstractCDSPropertiesBean.setSubRequestId(subRequestId);
+    }
+
+    @Test
+    public void preProcessRequestTest() throws Exception {
 
         DelegateExecution execution = mock(DelegateExecution.class);
         when(execution.getVariable("executionObject")).thenReturn(abstractCDSPropertiesBean);
 
         abstractCDSProcessingBBUtils.constructExecutionServiceInputObject(execution);
-        assertTrue(true);
+        verify(exceptionUtil, times(0))
+            .buildAndThrowWorkflowException(any(DelegateExecution.class), anyInt(), any(Exception.class));
+    }
+
+    @Test
+    public void sendRequestToCDSClientTest() {
+
+        DelegateExecution execution = mock(DelegateExecution.class);
+        when(execution.getVariable("executionServiceInput")).thenReturn(abstractCDSPropertiesBean);
+        abstractCDSProcessingBBUtils.sendRequestToCDSClient(execution);
+        verify(exceptionUtil, times(1))
+            .buildAndThrowWorkflowException(any(DelegateExecution.class), anyInt(), any(Exception.class));
+
     }
 
 }
index 59ff71a..9e0c26b 100644 (file)
@@ -2,6 +2,8 @@
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019 Ericsson. All rights reserved.
  * ================================================================================
+ *  Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -85,8 +87,7 @@ public class MonitorVnfmCreateJobTask extends MonitorVnfmJobTask{
           + "Unable to retrieve OperationStatus";
       LOGGER.error(message);
       exceptionUtil.buildAndThrowWorkflowException(execution, 1206, message);
-    }
-    if (operationStatusOption.isPresent()) {
+    } else if (operationStatusOption != null && operationStatusOption.isPresent()) {
       final OperationStateEnum operationStatus = operationStatusOption.get();
       if (operationStatus != OperationStateEnum.COMPLETED) {
         final String message = "Unable to instantiate jobId: "
index 695213b..0602f09 100644 (file)
@@ -4,6 +4,7 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
+ * Modifications Copyright (c) 2019 Samsung
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.so.apihandlerinfra.validation;
 
-import java.util.List;
-import java.util.Map;
-
 import org.onap.so.exceptions.ValidationException;
 import org.onap.so.serviceinstancebeans.CloudConfiguration;
 import org.onap.so.serviceinstancebeans.RequestParameters;
 
 import com.google.common.base.Strings;
 
-public class CustomWorkflowValidation implements ValidationRule{
-    
+public class CustomWorkflowValidation implements ValidationRule {
+
        @Override
-       public ValidationInformation validate(ValidationInformation info) throws ValidationException{
-       RequestParameters requestParameters = info.getSir().getRequestDetails().getRequestParameters();
-       CloudConfiguration cloudConfiguration = info.getSir().getRequestDetails ().getCloudConfiguration();
-       String workflowUuid = info.getInstanceIdMap().get("workflowUuid");
-       
+       public ValidationInformation validate(ValidationInformation info) throws ValidationException {
+               RequestParameters requestParameters = info.getSir().getRequestDetails().getRequestParameters();
+               CloudConfiguration cloudConfiguration = info.getSir().getRequestDetails().getCloudConfiguration();
+
                if (cloudConfiguration == null) {
-                       throw new ValidationException ("cloudConfiguration");
-               }else if (Strings.isNullOrEmpty((cloudConfiguration.getCloudOwner ()))) {
-               throw new ValidationException ("cloudOwner");                   
-               }else if (Strings.isNullOrEmpty((cloudConfiguration.getLcpCloudRegionId ()))) {
-               throw new ValidationException ("lcpCloudRegionId");
-       }else if (Strings.isNullOrEmpty((cloudConfiguration.getTenantId ()))) {
-               throw new ValidationException ("tenantId");
-       }
-       if(requestParameters == null){
-               throw new ValidationException("requestParameters");
-       }
-       
-       List<Map<String, Object>> userParams = requestParameters.getUserParams();
-       if (!validateCustomUserParams(userParams, workflowUuid)) {
-               throw new ValidationException("userParams");
-       }
-        return info;
-       }
-       
-       private boolean validateCustomUserParams(List<Map<String, Object>> userParams, String workflowUuid) {
-               return true;
+                       throw new ValidationException("cloudConfiguration");
+               } else if (Strings.isNullOrEmpty((cloudConfiguration.getCloudOwner()))) {
+                       throw new ValidationException("cloudOwner");
+               } else if (Strings.isNullOrEmpty((cloudConfiguration.getLcpCloudRegionId()))) {
+                       throw new ValidationException("lcpCloudRegionId");
+               } else if (Strings.isNullOrEmpty((cloudConfiguration.getTenantId()))) {
+                       throw new ValidationException("tenantId");
+               }
+               if (requestParameters == null) {
+                       throw new ValidationException("requestParameters");
+               }
+               return info;
        }
-}
\ No newline at end of file
+}