Additional junit tests for artifact generation 05/55505/1
authormark.j.leonard <mark.j.leonard@gmail.com>
Wed, 27 Jun 2018 17:27:47 +0000 (18:27 +0100)
committermark.j.leonard <mark.j.leonard@gmail.com>
Wed, 27 Jun 2018 17:28:06 +0000 (18:28 +0100)
New tests to improve code coverage. Remove underscores from existing
Junit test method names.

Issue-ID: AAI-1250
Change-Id: I8d0d9c41d7a124cbedea69d64c4cd78ac6e4bcfa
Signed-off-by: mark.j.leonard <mark.j.leonard@gmail.com>
src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java
src/test/java/org/onap/aai/babel/csar/vnfcatalog/ConfigurationsToBabelArtifactConverterTest.java [new file with mode: 0644]
src/test/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractorTest.java [new file with mode: 0644]
src/test/java/org/onap/aai/babel/service/CsarToXmlConverterTest.java
src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java
src/test/java/org/onap/aai/babel/service/TestRequestHeaders.java [new file with mode: 0644]
src/test/java/org/onap/aai/babel/xml/generator/model/TestModel.java [new file with mode: 0644]
src/test/resources/jsonFiles/success_request_vnf_catalog.json [new file with mode: 0644]
src/test/resources/jsonFiles/vnfVendorImageConfigurations.json [new file with mode: 0644]

index 9836e2a..b7d79a0 100644 (file)
@@ -30,7 +30,6 @@ import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.time.StopWatch;
 import org.apache.commons.lang3.tuple.ImmutablePair;
diff --git a/src/test/java/org/onap/aai/babel/csar/vnfcatalog/ConfigurationsToBabelArtifactConverterTest.java b/src/test/java/org/onap/aai/babel/csar/vnfcatalog/ConfigurationsToBabelArtifactConverterTest.java
new file mode 100644 (file)
index 0000000..b251401
--- /dev/null
@@ -0,0 +1,64 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 European Software Marketing Ltd.
+ * ================================================================================
+ * 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
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.aai.babel.csar.vnfcatalog;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+import org.onap.aai.babel.service.data.BabelArtifact;
+import org.onap.aai.babel.service.data.BabelArtifact.ArtifactType;
+import org.onap.aai.babel.util.ArtifactTestUtils;
+
+/**
+ * Tests {@link ConfigurationsToBabelArtifactConverter}.
+ */
+public class ConfigurationsToBabelArtifactConverterTest {
+    @Test
+    public void testNullListSupplied() {
+        assertThat(ConfigurationsToBabelArtifactConverter.convert(null), is(nullValue()));
+    }
+
+    @Test
+    public void testEmptyListSupplied() {
+        assertThat(ConfigurationsToBabelArtifactConverter.convert(new ArrayList<>()), is(nullValue()));
+    }
+
+    @Test
+    public void testValidListSupplied() throws IOException {
+        String expectedJson = new ArtifactTestUtils().getRequestJson("vnfVendorImageConfigurations.json");
+        List<VendorImageConfiguration> configurations =
+                new Gson().fromJson(expectedJson, new TypeToken<ArrayList<VendorImageConfiguration>>() {}.getType());
+
+        BabelArtifact artifact = ConfigurationsToBabelArtifactConverter.convert(configurations);
+
+        assertThat(artifact.getName(), is(equalTo("vnfVendorImageConfigurations")));
+        assertThat(artifact.getType(), is(equalTo(ArtifactType.VNFCATALOG)));
+        assertThat(artifact.getPayload(), is(equalTo(expectedJson)));
+    }
+}
diff --git a/src/test/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractorTest.java b/src/test/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractorTest.java
new file mode 100644 (file)
index 0000000..de5ea3f
--- /dev/null
@@ -0,0 +1,76 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 European Software Marketing Ltd.
+ * ================================================================================
+ * 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
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.aai.babel.csar.vnfcatalog;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.io.IOException;
+import org.junit.Test;
+import org.onap.aai.babel.service.data.BabelArtifact;
+import org.onap.aai.babel.service.data.BabelArtifact.ArtifactType;
+import org.onap.aai.babel.util.ArtifactTestUtils;
+
+/**
+ * Tests {@link VnfVendorImageExtractor}
+ */
+public class VnfVendorImageExtractorTest {
+
+    @Test(expected = NullPointerException.class)
+    public void createVendorImageMappingsNullCsarSupplied() throws ToscaToCatalogException, IOException {
+        new VnfVendorImageExtractor().extract(null);
+    }
+
+    @Test(expected = ToscaToCatalogException.class)
+    public void createVendorImageMappingsEmptyCsarSupplied() throws ToscaToCatalogException, IOException {
+        new VnfVendorImageExtractor().extract(new byte[0]);
+    }
+
+    @Test(expected = ToscaToCatalogException.class)
+    public void createVendorImageMappingsInvalidCsarFile() throws IOException, ToscaToCatalogException {
+        extractArtifact("noYmlFilesArchive.zip");
+    }
+
+    @Test(expected = ToscaToCatalogException.class)
+    public void createVendorImageMappingsInvalidFile() throws IOException, ToscaToCatalogException {
+        extractArtifact("Duff.txt");
+    }
+
+    @Test
+    public void createVendorImageMappingsNoVnfConfigurationExists() throws IOException, ToscaToCatalogException {
+        assertThat(extractArtifact("noVnfConfiguration.csar"), is(nullValue()));
+    }
+
+    @Test
+    public void createVendorImageMappingsValidFile() throws IOException, ToscaToCatalogException {
+        BabelArtifact artifact = extractArtifact("catalog_csar.csar");
+        assertThat(artifact.getName(), is(equalTo("vnfVendorImageConfigurations")));
+        assertThat(artifact.getType(), is(equalTo(ArtifactType.VNFCATALOG)));
+        assertThat(artifact.getPayload(),
+                is(equalTo(new ArtifactTestUtils().getRequestJson("vnfVendorImageConfigurations.json"))));
+    }
+
+    private BabelArtifact extractArtifact(String artifactName) throws ToscaToCatalogException, IOException {
+        return new VnfVendorImageExtractor().extract(new ArtifactTestUtils().getCompressedArtifact(artifactName));
+    }
+}
index 0d6c7b3..3dd8382 100644 (file)
@@ -58,7 +58,12 @@ public class CsarToXmlConverterTest {
     }
 
     private enum CsarTest {
-        VALID_CSAR_FILE("service-SdWanServiceTest-csar.csar"), NO_YAML_FILES("noYmlFilesArchive.zip");
+        VALID_CSAR_FILE(
+                "service-SdWanServiceTest-csar.csar"
+        ),
+        NO_YAML_FILES(
+                "noYmlFilesArchive.zip"
+        );
 
         private String filename;
         private ArtifactTestUtils artifactTestUtils = new ArtifactTestUtils();
@@ -95,27 +100,27 @@ public class CsarToXmlConverterTest {
     }
 
     @Test(expected = NullPointerException.class)
-    public void generateXmlFromCsar_nullArtifactSupplied() throws CsarConverterException {
+    public void testNullArtifactSupplied() throws CsarConverterException {
         converter.generateXmlFromCsar(null, null, null);
     }
 
     @Test(expected = NullPointerException.class)
-    public void generateXmlFromCsar_missingName() throws CsarConverterException, IOException {
+    public void testMissingName() throws CsarConverterException, IOException {
         converter.generateXmlFromCsar(CsarTest.VALID_CSAR_FILE.getContent(), null, null);
     }
 
     @Test(expected = NullPointerException.class)
-    public void generateXmlFromCsar_missingVersion() throws CsarConverterException, IOException {
+    public void testMissingVersion() throws CsarConverterException, IOException {
         converter.generateXmlFromCsar(CsarTest.VALID_CSAR_FILE.getContent(), INCORRECT_CSAR_NAME, null);
     }
 
     @Test(expected = CsarConverterException.class)
-    public void generateXmlFromCsar_noPayloadExists() throws CsarConverterException {
+    public void testNoPayloadExists() throws CsarConverterException {
         converter.generateXmlFromCsar(new byte[0], INCORRECT_CSAR_NAME, SERVICE_VERSION);
     }
 
     @Test(expected = CsarConverterException.class)
-    public void generateXmlFromCsar_csarFileHasNoYmlFiles() throws CsarConverterException, IOException {
+    public void testCsarFileHasNoYmlFiles() throws CsarConverterException, IOException {
         converter.generateXmlFromCsar(CsarTest.NO_YAML_FILES.getContent(), "noYmlFilesArchive.zip", SERVICE_VERSION);
     }
 
index b5063dd..c770c60 100644 (file)
@@ -48,7 +48,7 @@ import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 /**
- * Direct invocation of the generate artifacts service implementation
+ * Direct invocation of the generate artifacts service implementation.
  *
  */
 @RunWith(SpringJUnit4ClassRunner.class)
@@ -63,6 +63,7 @@ public class TestGenerateArtifactsServiceImpl {
     }
 
     private static final String ARTIFACT_GENERATOR_CONFIG = "artifact-generator.properties";
+
     @Inject
     private AAIMicroServiceAuth auth;
 
@@ -72,6 +73,13 @@ public class TestGenerateArtifactsServiceImpl {
                 new ArtifactTestUtils().getResourcePath(ARTIFACT_GENERATOR_CONFIG));
     }
 
+    @Test
+    public void testGenerateArtifacts() throws Exception {
+        Response response = processJsonRequest("success_request_vnf_catalog.json");
+        assertThat(response.getStatus(), is(Response.Status.OK.getStatusCode()));
+        assertThat(response.getEntity(), is(getResponseJson("response.json")));
+    }
+
     @Test
     public void testInvalidCsarFile() throws URISyntaxException, IOException {
         Response response = processJsonRequest("invalid_csar_request.json");
@@ -108,12 +116,12 @@ public class TestGenerateArtifactsServiceImpl {
     }
 
     /**
-     * Create a (mocked) HTTPS request and invoke the Babel generate artifacts API
+     * Create a (mocked) HTTPS request and invoke the Babel generate artifacts API.
      *
      * @param resource path to the incoming JSON request
      * @return the Response from the HTTP API
-     * @throws URISyntaxException
-     * @throws IOException
+     * @throws URISyntaxException if the URI cannot be created
+     * @throws IOException if the resource cannot be loaded
      */
     private Response processJsonRequest(String resource) throws URISyntaxException, IOException {
         UriInfo mockUriInfo = Mockito.mock(UriInfo.class);
@@ -156,6 +164,10 @@ public class TestGenerateArtifactsServiceImpl {
         return new ArtifactTestUtils().getRequestJson(resource);
     }
 
+    private String getResponseJson(String jsonResponse) throws IOException, URISyntaxException {
+        return new ArtifactTestUtils().getResponseJson(jsonResponse);
+    }
+
     private List<String> createSingletonList(String listItem) {
         return Collections.<String>singletonList(listItem);
     }
diff --git a/src/test/java/org/onap/aai/babel/service/TestRequestHeaders.java b/src/test/java/org/onap/aai/babel/service/TestRequestHeaders.java
new file mode 100644 (file)
index 0000000..0d81867
--- /dev/null
@@ -0,0 +1,159 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 European Software Marketing Ltd.
+ * ================================================================================
+ * 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
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.aai.babel.service;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map.Entry;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MultivaluedHashMap;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.aai.babel.request.RequestHeaders;
+
+/**
+ * Tests {@link RequestHeaders}.
+ *
+ */
+public class TestRequestHeaders {
+
+    /**
+     * Tests compatibility with the X-ECOMP-* request headers.
+     */
+    @Test
+    public void testECOMPHeaders() {
+        String transactionId = "transaction-id";
+        String serviceInstanceId = "service-instance-id";
+
+        MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+        headersMap.put(RequestHeaders.HEADER_REQUEST_ID, createSingletonList(transactionId));
+        headersMap.put(RequestHeaders.HEADER_SERVICE_INSTANCE_ID, createSingletonList(serviceInstanceId));
+        headersMap.put("X-FromAppId", createSingletonList("app-id"));
+        headersMap.put("Host", createSingletonList("hostname"));
+
+        HttpHeaders headers = createMockedHeaders(headersMap);
+        RequestHeaders requestHeaders = new RequestHeaders(headers);
+        assertThat(requestHeaders.getRequestId(), is(equalTo(transactionId)));
+        assertThat(requestHeaders.getInstanceId(), is(equalTo(serviceInstanceId)));
+    }
+
+    @Test
+    public void testMultipleHeaderValues() {
+        String transactionId = "transaction-id";
+        String serviceInstanceId = "service-instance-id";
+
+        MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+        headersMap.put(RequestHeaders.HEADER_REQUEST_ID, Arrays.asList(transactionId, "fred"));
+        headersMap.put(RequestHeaders.HEADER_SERVICE_INSTANCE_ID, Arrays.asList(serviceInstanceId, "bob"));
+
+        HttpHeaders headers = createMockedHeaders(headersMap);
+        RequestHeaders requestHeaders = new RequestHeaders(headers);
+        assertThat(requestHeaders.getRequestId(), is(equalTo(transactionId)));
+        assertThat(requestHeaders.getInstanceId(), is(equalTo(serviceInstanceId)));
+    }
+
+    @Test
+    public void testStandardHeaders() {
+        MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+        headersMap.put("X-TransactionId", createSingletonList("transaction-id"));
+        headersMap.put("X-FromAppId", createSingletonList("app-id"));
+        headersMap.put("Host", createSingletonList("hostname"));
+
+        HttpHeaders headers = createMockedHeaders(headersMap);
+        RequestHeaders requestHeaders = new RequestHeaders(headers);
+        assertThat(requestHeaders.getRequestId(), is(nullValue()));
+        assertThat(requestHeaders.getInstanceId(), is(nullValue()));
+    }
+
+    @Test
+    public void testHeadersWithTransactionIdSuffix() {
+        MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+        headersMap.put("X-TransactionId", createSingletonList("transaction-id:123"));
+        headersMap.put("X-FromAppId", createSingletonList("app-id"));
+        headersMap.put("Host", createSingletonList("hostname"));
+
+        HttpHeaders headers = createMockedHeaders(headersMap);
+        RequestHeaders requestHeaders = new RequestHeaders(headers);
+        assertThat(requestHeaders.getCorrelationId(), is(equalTo("transaction-id")));
+        assertThat(requestHeaders.getInstanceId(), is(nullValue()));
+    }
+
+    @Test
+    public void testEmptyHeaders() {
+        MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+        headersMap.put(RequestHeaders.HEADER_REQUEST_ID, Collections.emptyList());
+        headersMap.put(RequestHeaders.HEADER_SERVICE_INSTANCE_ID, Collections.emptyList());
+
+        HttpHeaders headers = createMockedHeaders(headersMap);
+        RequestHeaders requestHeaders = new RequestHeaders(headers);
+        assertThat(requestHeaders.getRequestId(), is(nullValue()));
+        assertThat(requestHeaders.getInstanceId(), is(nullValue()));
+    }
+
+    @Test
+    public void testNullHeaders() {
+        MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+        headersMap.put(RequestHeaders.HEADER_REQUEST_ID, Collections.emptyList());
+
+        HttpHeaders headers = createMockedHeaders(headersMap);
+        Mockito.when(headers.getRequestHeader(RequestHeaders.HEADER_SERVICE_INSTANCE_ID)).thenReturn(null);
+
+        RequestHeaders requestHeaders = new RequestHeaders(headers);
+        assertThat(requestHeaders.getRequestId(), is(nullValue()));
+        assertThat(requestHeaders.getInstanceId(), is(nullValue()));
+    }
+
+    @Test
+    public void testToString() {
+        String transactionId = "transaction-id";
+        String serviceInstanceId = "service-instance-id";
+
+        MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+        headersMap.put(RequestHeaders.HEADER_REQUEST_ID, createSingletonList(transactionId));
+        headersMap.put(RequestHeaders.HEADER_SERVICE_INSTANCE_ID, createSingletonList(serviceInstanceId));
+
+        HttpHeaders headers = createMockedHeaders(headersMap);
+        RequestHeaders requestHeaders = new RequestHeaders(headers);
+        assertThat(requestHeaders.toString(), is(equalTo(
+                "RequestHeaders [requestId=transaction-id, instanceId=service-instance-id, transactionId=null]")));
+    }
+
+    private HttpHeaders createMockedHeaders(MultivaluedHashMap<String, String> headersMap) {
+        HttpHeaders headers = Mockito.mock(HttpHeaders.class);
+        for (Entry<String, List<String>> entry : headersMap.entrySet()) {
+            List<String> valuesList = entry.getValue();
+            String value = valuesList == null || valuesList.isEmpty() ? null : valuesList.get(0);
+            Mockito.when(headers.getHeaderString(entry.getKey())).thenReturn(value);
+        }
+        Mockito.when(headers.getRequestHeaders()).thenReturn(headersMap);
+        return headers;
+    }
+
+    private List<String> createSingletonList(String listItem) {
+        return Collections.<String>singletonList(listItem);
+    }
+}
diff --git a/src/test/java/org/onap/aai/babel/xml/generator/model/TestModel.java b/src/test/java/org/onap/aai/babel/xml/generator/model/TestModel.java
new file mode 100644 (file)
index 0000000..77c2a50
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 European Software Marketing Ltd.
+ * ================================================================================
+ * 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
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.aai.babel.xml.generator.model;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Properties;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil;
+
+/**
+ * Direct tests of the Model (to improve code coverage).
+ */
+public class TestModel {
+
+    static {
+        if (System.getProperty("AJSC_HOME") == null) {
+            System.setProperty("AJSC_HOME", ".");
+        }
+    }
+
+    @Before
+    public void setup() throws FileNotFoundException, IOException {
+        InputStream in = TestModel.class.getClassLoader().getResourceAsStream("artifact-generator.properties");
+        Properties properties = new Properties();
+        properties.load(in);
+        in.close();
+        WidgetConfigurationUtil.setConfig(properties);
+    }
+
+    @Test
+    public void testGetModels() {
+        Collection<String> toscaTypes = Arrays.asList("org.openecomp.resource.vf.allottedResource",
+                "org.openecomp.resource.cp", "org.openecomp.resource.vfc.nodes.heat.cinder", "any.unknown.type", null);
+        for (String toscaType : toscaTypes) {
+            Model.getModelFor(toscaType);
+        }
+    }
+
+    @Test
+    public void testGetCardinality() {
+        new AllotedResource().getCardinality();
+    }
+
+    @Test
+    public void testGetModelType() {
+        new OamNetwork().getModelType();
+    }
+
+}
diff --git a/src/test/resources/jsonFiles/success_request_vnf_catalog.json b/src/test/resources/jsonFiles/success_request_vnf_catalog.json
new file mode 100644 (file)
index 0000000..3f0f137
--- /dev/null
@@ -0,0 +1,3 @@
+{"csar": "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EwAARGVmaW5pdGlvbnMvYXJ0aWZhY3RzLnltbFBLAQIUABQACAgIAKVc3UpsImIhMAsAAO8uAAAcAAAAAAAAAAAAAAAAAOMYAABEZWZpbml0aW9ucy9jYXBhYmlsaXRpZXMueW1sUEsBAhQAFAAICAgApVzdSv6TiLWYJgAAaj4BABQAAAAAAAAAAAAAAAAAXSQAAERlZmluaXRpb25zL2RhdGEueW1sUEsBAhQAFAAICAgApVzdSh6ZzlcpBQAASg4AABYAAAAAAAAAAAAAAAAAN0sAAERlZmluaXRpb25zL2dyb3Vwcy55bWxQSwECFAAUAAgICAClXN1KIbWTjkgDAAB9CQAAGgAAAAAAAAAAAAAAAACkUAAARGVmaW5pdGlvbnMvaW50ZXJmYWNlcy55bWxQSwECFAAUAAgICAClXN1KhQB32bcoAACIPQEAFQAAAAAAAAAAAAAAAAA0VAAARGVmaW5pdGlvbnMvbm9kZXMueW1sUEsBAhQAFAAICAgApVzdSkWW8QFmAgAAlgYAABgAAAAAAAAAAAAAAAAALn0AAERlZmluaXRpb25zL3BvbGljaWVzLnltbFBLAQIUABQACAgIAKVc3UpjF0jHQAYAAEYVAAAdAAAAAAAAAAAAAAAAANp/AABEZWZpbml0aW9ucy9yZWxhdGlvbnNoaXBzLnltbFBLAQIUABQACAgIAKVc3UrByuWAxgEAAAYEAABaAAAAAAAAAAAAAAAAAGWGAABBcnRpZmFjdHMvb3JnLm9wZW5lY29tcC5yZXNvdXJjZS52Zi4yOW5mb2RfdjEuMC9EZXBsb3ltZW50L1ZGX0xJQ0VOU0UvdmYtbGljZW5zZS1tb2RlbC54bWxQSwECFAAUAAgICAClXN1KGmkFhO4BAAALBQAAYgAAAAAAAAAAAAAAAACziAAAQXJ0aWZhY3RzL29yZy5vcGVuZWNvbXAucmVzb3VyY2UudmYuMjluZm9kX3YxLjAvRGVwbG95bWVudC9WRU5ET1JfTElDRU5TRS92ZW5kb3ItbGljZW5zZS1tb2RlbC54bWxQSwECFAAUAAgICAClXN1K9QcNsqsBAABBBgAASAAAAAAAAAAAAAAAAAAxiwAAQXJ0aWZhY3RzL0RlcGxveW1lbnQvTU9ERUxfSU5WRU5UT1JZX1BST0ZJTEUvQUFJLTI5TkZPRC1yZXNvdXJjZS0xLjAueG1sUEsBAhQAFAAICAgApVzdSotT44MdAgAADwsAAEkAAAAAAAAAAAAAAAAAUo0AAEFydGlmYWN0cy9EZXBsb3ltZW50L01PREVMX0lOVkVOVE9SWV9QUk9GSUxFL0FBSS0yOU5GT0RfUy1zZXJ2aWNlLTEuMC54bWxQSwECFAAUAAAACADvcv9K9uhElIoAAACwAAAAGQAAAAAAAAABACAAAADmjwAAVE9TQ0EtTWV0YWRhdGEvVE9TQ0EubWV0YVBLBQYAAAAAFQAVAFUHAACnkAAAAAA=",
+ "artifactVersion":"1.0",
+ "artifactName":"catalog_csar.csar"}
\ No newline at end of file
diff --git a/src/test/resources/jsonFiles/vnfVendorImageConfigurations.json b/src/test/resources/jsonFiles/vnfVendorImageConfigurations.json
new file mode 100644 (file)
index 0000000..cb836d3
--- /dev/null
@@ -0,0 +1 @@
+[{"application":"VM00","application-vendor":"29NFOD","application-version":"3.16.1"},{"application":"VM00","application-vendor":"29NFOD","application-version":"3.16.9"},{"application":"VM01","application-vendor":"29NFOD","application-version":"3.16.1"},{"application":"VM01","application-vendor":"29NFOD","application-version":"3.16.9"}]
\ No newline at end of file