Improve tests for CsarInstallerImpl 63/79763/6
authormichal.banka <michal.banka@nokia.com>
Wed, 6 Mar 2019 09:22:50 +0000 (10:22 +0100)
committermichal.banka <michal.banka@nokia.com>
Fri, 8 Mar 2019 09:58:29 +0000 (10:58 +0100)
Change-Id: I18ad5789c1ed5a6d3cdf3c954e7b8ff224a589b4
Issue-ID: CLAMP-307
Signed-off-by: michal.banka <michal.banka@nokia.com>
src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java
src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java
src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImplTest.java

index 1fb86c0..3f1403f 100644 (file)
@@ -17,6 +17,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END============================================
+ *  * Modifications copyright (c) 2019 Nokia
  * ===================================================================
  *
  */
@@ -92,11 +93,6 @@ public class CldsSdcControllerConfiguration {
         });
     }
 
-    @Bean(name = "csarInstaller")
-    public CsarInstaller getCsarInstaller() {
-        return new CsarInstallerImpl();
-    }
-
     @Bean(name = "sdcControllersConfiguration")
     public SdcControllersConfiguration getSdcControllersConfiguration() {
         return new SdcControllersConfiguration();
index 1303f2a..df4e13a 100644 (file)
@@ -17,6 +17,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END============================================
+ * Modifications copyright (c) 2019 Nokia
  * ===================================================================
  *
  */
@@ -58,6 +59,7 @@ import org.onap.clamp.clds.util.JsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.yaml.snakeyaml.Yaml;
 
@@ -66,6 +68,7 @@ import org.yaml.snakeyaml.Yaml;
  * There is no state kept by the bean. It's used to deploy the csar/notification
  * received from SDC in DB.
  */
+@Component
 public class CsarInstallerImpl implements CsarInstaller {
 
     private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstallerImpl.class);
@@ -80,19 +83,25 @@ public class CsarInstallerImpl implements CsarInstaller {
      */
     @Value("${clamp.config.sdc.blueprint.parser.mapping:'classpath:/clds/blueprint-parser-mapping.json'}")
     protected String blueprintMappingFile;
-    @Autowired
     protected ApplicationContext appContext;
-    @Autowired
     private CldsDao cldsDao;
-    @Autowired
     CldsTemplateService cldsTemplateService;
-    @Autowired
     CldsService cldsService;
-    @Autowired
     DcaeInventoryServices dcaeInventoryService;
-    @Autowired
     private XslTransformer cldsBpmnTransformer;
 
+    @Autowired
+    public CsarInstallerImpl(ApplicationContext appContext,
+                             CldsDao cldsDao, CldsTemplateService cldsTemplateService, CldsService cldsService,
+                             DcaeInventoryServices dcaeInventoryService, XslTransformer cldsBpmnTransformer) {
+        this.appContext = appContext;
+        this.cldsDao = cldsDao;
+        this.cldsTemplateService = cldsTemplateService;
+        this.cldsService = cldsService;
+        this.dcaeInventoryService = dcaeInventoryService;
+        this.cldsBpmnTransformer = cldsBpmnTransformer;
+    }
+
     @Autowired
     private BlueprintParser blueprintParser;
 
@@ -154,16 +163,7 @@ public class CsarInstallerImpl implements CsarInstaller {
         }
     }
 
-    private void createPolicyModel(CsarHandler csar) throws PolicyModelException {
-        try{
-            Optional<String> policyModelYaml = csar.getPolicyModelYaml();
-            // save policy model into the database
-        } catch (IOException e) {
-            throw new PolicyModelException("TransformerException when decoding the YamlText", e);
-        }
-    }
-
-    private BlueprintParserFilesConfiguration searchForRightMapping(BlueprintArtifact blueprintArtifact)
+    BlueprintParserFilesConfiguration searchForRightMapping(BlueprintArtifact blueprintArtifact)
         throws SdcArtifactInstallerException {
         List<BlueprintParserFilesConfiguration> listConfig = new ArrayList<>();
         Yaml yaml = new Yaml();
@@ -202,6 +202,15 @@ public class CsarInstallerImpl implements CsarInstaller {
         return node.toString();
     }
 
+    private void createPolicyModel(CsarHandler csar) throws PolicyModelException {
+        try{
+            Optional<String> policyModelYaml = csar.getPolicyModelYaml();
+            // save policy model into the database
+        } catch (IOException e) {
+            throw new PolicyModelException("TransformerException when decoding the YamlText", e);
+        }
+    }
+
     private static String searchForPolicyScopePrefix(BlueprintArtifact blueprintArtifact)
         throws SdcArtifactInstallerException {
         String policyName = null;
index a995c52..1fe3ff3 100644 (file)
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END============================================
+ *  * Modifications copyright (c) 2019 Nokia
  * ===================================================================
  *
  */
 
-package org.onap.clamp.clds.sdc.controller.installer;
 
-import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+package org.onap.clamp.clds.sdc.controller.installer;
 
 import com.google.gson.JsonObject;
 import java.io.IOException;
+import java.io.InputStream;
+import org.apache.commons.io.IOUtils;
+import org.assertj.core.api.Assertions;
+import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.clamp.clds.client.DcaeInventoryServices;
+import org.onap.clamp.clds.config.sdc.BlueprintParserFilesConfiguration;
+import org.onap.clamp.clds.dao.CldsDao;
+import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException;
+import org.onap.clamp.clds.service.CldsService;
+import org.onap.clamp.clds.service.CldsTemplateService;
+import org.onap.clamp.clds.transform.XslTransformer;
 import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.sdc.api.notification.INotificationData;
+import org.onap.sdc.api.notification.IResourceInstance;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.io.Resource;
 
+@RunWith(MockitoJUnitRunner.class)
 public class CsarInstallerImplTest {
 
+    @Mock
+    private CsarHandler csarHandler;
+
+    @Mock
+    private ApplicationContext applicationContext;
+
+    @Mock
+    private DcaeInventoryServices dcaeInventoryServices;
+
+    @Mock
+    private IResourceInstance resourceInstance;
+
+    @Mock
+    private CldsService cldsService;
+
+    @Mock
+    private INotificationData notificationData;
+
+    @Mock
+    private Metadata metadata;
+
+    @Mock
+    private ISdcCsarHelper sdcCsarHelper;
+
+    private CsarInstallerImpl csarInstaller;
+    private BlueprintArtifact artifact;
+
+    /**
+     * Set up method.
+     * throws: Exception
+     */
+    @Before
+    public void setUp() throws Exception {
+        String dceaBlueprint = ResourceFileUtil.getResourceAsString("tosca/dcea_blueprint.yml");
+        artifact = prepareBlueprintArtifact(dceaBlueprint);
+        csarInstaller = new CsarInstallerImpl(applicationContext, new CldsDao(), new CldsTemplateService(),
+                cldsService, dcaeInventoryServices, new XslTransformer());
+    }
+
     @Test
-    public void shouldReturnInputParametersFromBlueprint() throws IOException {
+    public void shouldReturnInputParametersFromBlueprint() {
         //given
         String expectedBlueprintInputsText = "{\"aaiEnrichmentHost\":\"aai.onap.svc.cluster.local\""
-            + ",\"aaiEnrichmentPort\":\"8443\""
-            + ",\"enableAAIEnrichment\":true"
-            + ",\"dmaap_host\":\"message-router\""
-            + ",\"dmaap_port\":\"3904\""
-            + ",\"enableRedisCaching\":false"
-            + ",\"redisHosts\":\"dcae-redis:6379\""
-            + ",\"tag_version\":\"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0\""
-            + ",\"consul_host\":\"consul-server\""
-            + ",\"consul_port\":\"8500\",\"cbs_host\":\"{\\\"test\\\":"
-            + "{\\\"test\\\":\\\"test\\\"}}\",\"cbs_port\":\"10000\""
-            + ",\"external_port\":\"32010\",\"policy_id\":\"AUTO_GENERATED_POLICY_ID_AT_SUBMIT\"}";
+                + ",\"aaiEnrichmentPort\":\"8443\""
+                + ",\"enableAAIEnrichment\":true"
+                + ",\"dmaap_host\":\"message-router\""
+                + ",\"dmaap_port\":\"3904\""
+                + ",\"enableRedisCaching\":false"
+                + ",\"redisHosts\":\"dcae-redis:6379\""
+                + ",\"tag_version\":"
+                + "\"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0\""
+                + ",\"consul_host\":\"consul-server\""
+                + ",\"consul_port\":\"8500\",\"cbs_host\":\"{\\\"test\\\":"
+                + "{\\\"test\\\":\\\"test\\\"}}\",\"cbs_port\":\"10000\""
+                + ",\"external_port\":\"32010\",\"policy_id\":\"AUTO_GENERATED_POLICY_ID_AT_SUBMIT\"}";
 
         JsonObject expectedBlueprintInputs = JsonUtils.GSON.fromJson(expectedBlueprintInputsText, JsonObject.class);
-        String dceaBlueprint = ResourceFileUtil.getResourceAsString("tosca/dcea_blueprint.yml");
-        BlueprintArtifact blueprintArtifact = mock(BlueprintArtifact.class);
-        when(blueprintArtifact.getDcaeBlueprint()).thenReturn(dceaBlueprint);
-        CsarInstallerImpl csarInstaller = new CsarInstallerImpl();
+        //when
+        String parametersInJson = csarInstaller.getAllBlueprintParametersInJson(artifact);
+        //then
+        Assertions.assertThat(JsonUtils.GSON.fromJson(parametersInJson, JsonObject.class))
+                .isEqualTo(expectedBlueprintInputs);
+    }
 
+    @Test
+    public void shouldReturnBuildModelName() throws SdcArtifactInstallerException {
+        //given
+        String expectedModelName = "CLAMP_test_name_"
+                + "vtest_service_version_"
+                + "test_resource_instance_name_"
+                + "test_artifact_name";
+        prepareMockCsarHandler("name", "test_name",
+                "test_service_version");
+        Mockito.when(resourceInstance.getResourceInstanceName()).thenReturn("test_resource_instance_name");
         //when
-        String parametersInJson = csarInstaller.getAllBlueprintParametersInJson(blueprintArtifact);
+        String actualModelName = CsarInstallerImpl.buildModelName(csarHandler, artifact);
+        //then
+        Assertions.assertThat(actualModelName).isEqualTo(expectedModelName);
+    }
+
+    @Test
+    public void shouldReturnRightMapping() throws SdcArtifactInstallerException, IOException {
+        //given
+        String input = "[{\"blueprintKey\":\"tca_k8s\","
+                + "\"dcaeDeployable\":false,"
+                + "\"files\":{\"svgXmlFilePath\":\"samplePath\",\"bpmnXmlFilePath\":\"samplePath\"}}]";
+        BlueprintParserFilesConfiguration filesConfiguration = new BlueprintParserFilesConfiguration();
+        filesConfiguration.setBpmnXmlFilePath("samplePath");
+        filesConfiguration.setSvgXmlFilePath("samplePath");
+        Resource resource = Mockito.mock(Resource.class);
+        InputStream inputStream = IOUtils.toInputStream(input, "UTF-8");
+        Mockito.when(applicationContext.getResource(Mockito.any(String.class))).thenReturn(resource);
+        Mockito.when(resource.getInputStream()).thenReturn(inputStream);
+        csarInstaller.loadConfiguration();
+        //when
+        BlueprintParserFilesConfiguration configuration = csarInstaller.searchForRightMapping(artifact);
 
         //then
-        assertThat(JsonUtils.GSON.fromJson(parametersInJson, JsonObject.class)).isEqualTo(expectedBlueprintInputs);
+        Assertions.assertThat(configuration.getBpmnXmlFilePath()).isEqualTo("samplePath");
+        Assertions.assertThat(configuration.getSvgXmlFilePath()).isEqualTo("samplePath");
+    }
+
+    private BlueprintArtifact prepareBlueprintArtifact(String dceaBlueprint) {
+        artifact = new BlueprintArtifact();
+        artifact.setBlueprintArtifactName("test_artifact_name");
+        artifact.setBlueprintInvariantServiceUuid("test_inv_uuid");
+        artifact.setResourceAttached(resourceInstance);
+        artifact.setDcaeBlueprint(dceaBlueprint);
+        return artifact;
+    }
+
+    private void prepareMockCsarHandler(String metadataNameMockInput, String metadataNameMockOutput,
+                                        String serviceVersion) {
+        Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(sdcCsarHelper);
+        Mockito.when(sdcCsarHelper.getServiceMetadata()).thenReturn(metadata);
+        Mockito.when(metadata.getValue(metadataNameMockInput)).thenReturn(metadataNameMockOutput);
+        Mockito.when(csarHandler.getSdcNotification()).thenReturn(notificationData);
+        Mockito.when(notificationData.getServiceVersion()).thenReturn(serviceVersion);
     }
 }
\ No newline at end of file