X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Forg%2Fonap%2Faai%2Fmodelloader%2Fnotification%2FArtifactDownloadManagerTest.java;h=eb31688a913dbff677da6085bf5b496aa7dab054;hb=HEAD;hp=2c0248757a66b6a43360bfb93bb657eb4381450e;hpb=6e4f04afea4c2d07fdd9c15eda38438c7baeb308;p=aai%2Fmodel-loader.git diff --git a/src/test/java/org/onap/aai/modelloader/notification/ArtifactDownloadManagerTest.java b/src/test/java/org/onap/aai/modelloader/notification/ArtifactDownloadManagerTest.java index 2c02487..f1bbd31 100644 --- a/src/test/java/org/onap/aai/modelloader/notification/ArtifactDownloadManagerTest.java +++ b/src/test/java/org/onap/aai/modelloader/notification/ArtifactDownloadManagerTest.java @@ -1,9 +1,8 @@ /** - * ============LICENSE_START======================================================= + * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2024 Deutsche Telekom AG Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,379 +19,90 @@ */ package org.onap.aai.modelloader.notification; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import static org.onap.aai.modelloader.fixture.NotificationDataFixtureBuilder.getNotificationDataWithInvalidType; -import static org.onap.aai.modelloader.fixture.NotificationDataFixtureBuilder.getNotificationDataWithModelQuerySpec; -import static org.onap.aai.modelloader.fixture.NotificationDataFixtureBuilder.getNotificationDataWithOneOfEach; -import static org.onap.aai.modelloader.fixture.NotificationDataFixtureBuilder.getNotificationDataWithOneService; -import static org.onap.aai.modelloader.fixture.NotificationDataFixtureBuilder.getNotificationDataWithToscaCsarFile; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.matching; +import static com.github.tomakehurst.wiremock.client.WireMock.matchingJsonPath; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static org.junit.jupiter.api.Assertions.assertEquals; -import java.io.IOException; -import java.security.KeyManagementException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; import java.util.ArrayList; import java.util.List; -import java.util.Properties; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Matchers; -import org.mockito.Mockito; -import org.mockito.internal.util.reflection.Whitebox; -import org.onap.aai.babel.service.data.BabelArtifact; -import org.onap.aai.modelloader.config.ModelLoaderConfig; -import org.onap.aai.modelloader.entity.model.BabelArtifactParsingException; -import org.onap.aai.modelloader.restclient.BabelServiceClient; -import org.onap.aai.modelloader.restclient.BabelServiceClient.BabelServiceException; -import org.onap.aai.modelloader.restclient.BabelServiceClientFactory; -import org.onap.aai.modelloader.util.ArtifactTestUtils; -import org.onap.sdc.api.IDistributionClient; +import java.util.Set; + +import org.junit.jupiter.api.Test; +import org.onap.aai.modelloader.DistributionClientTestConfiguration; +import org.onap.aai.modelloader.entity.Artifact; +import org.onap.aai.modelloader.entity.ArtifactType; +import org.onap.aai.modelloader.entity.model.ModelArtifact; +import org.onap.aai.modelloader.service.ArtifactInfoImpl; import org.onap.sdc.api.notification.IArtifactInfo; -import org.onap.sdc.api.notification.INotificationData; -import org.onap.sdc.api.results.IDistributionClientDownloadResult; -import org.onap.sdc.impl.DistributionClientDownloadResultImpl; -import org.onap.sdc.utils.DistributionActionResultEnum; - -/** - * Tests {@link ArtifactDownloadManager} - */ +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock; +import org.springframework.context.annotation.Import; +import org.springframework.http.MediaType; +import org.springframework.kafka.test.context.EmbeddedKafka; +import org.springframework.test.annotation.DirtiesContext; + +@DirtiesContext +@AutoConfigureWireMock(port = 0) +@EmbeddedKafka(partitions = 1, ports = 9092, topics = {"${topics.distribution.notification}"}) +@SpringBootTest(properties = { "ml.distribution.connection.enabled=true" }) +@Import(DistributionClientTestConfiguration.class) public class ArtifactDownloadManagerTest { - private static final String FALSE_SHOULD_HAVE_BEEN_RETURNED = "A value of 'false' should have been returned"; - private static final String OOPS = "oops"; - private static final String TRUE_SHOULD_HAVE_BEEN_RETURNED = "A value of 'true' should have been returned"; - - private ArtifactDownloadManager downloadManager; - private BabelServiceClient mockBabelClient; - private IDistributionClient mockDistributionClient; - private NotificationPublisher mockNotificationPublisher; - private BabelArtifactConverter mockBabelArtifactConverter; - private BabelServiceClientFactory mockClientFactory; - - @Before - public void setup() throws Exception { - mockBabelClient = mock(BabelServiceClient.class); - mockDistributionClient = mock(IDistributionClient.class); - mockNotificationPublisher = mock(NotificationPublisher.class); - mockBabelArtifactConverter = mock(BabelArtifactConverter.class); - mockClientFactory = mock(BabelServiceClientFactory.class); - when(mockClientFactory.create(Mockito.any())).thenReturn(mockBabelClient); - - Properties configProperties = new Properties(); - configProperties.load(this.getClass().getClassLoader().getResourceAsStream("model-loader.properties")); - downloadManager = new ArtifactDownloadManager(mockDistributionClient, - new ModelLoaderConfig(configProperties, "."), mockClientFactory); - - Whitebox.setInternalState(downloadManager, "notificationPublisher", mockNotificationPublisher); - Whitebox.setInternalState(downloadManager, "babelArtifactConverter", mockBabelArtifactConverter); - } - - @After - public void tearDown() { - downloadManager = null; - mockDistributionClient = null; - mockNotificationPublisher = null; - } - - @Test - public void downloadArtifacts_emptyListSupplied() { - List modelFiles = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - - assertTrue(TRUE_SHOULD_HAVE_BEEN_RETURNED, downloadManager - .downloadArtifacts(getNotificationDataWithOneService(), new ArrayList<>(), modelFiles, catalogFiles)); - - Mockito.verifyZeroInteractions(mockBabelClient, mockDistributionClient, mockNotificationPublisher, - mockBabelArtifactConverter); - } - - @Test - public void downloadArtifacts_artifactDownloadFails() { - INotificationData data = getNotificationDataWithOneService(); - IArtifactInfo artifact = data.getServiceArtifacts().get(0); - when(mockDistributionClient.download(artifact)) - .thenReturn(createDistributionClientDownloadResult(DistributionActionResultEnum.FAIL, OOPS, null)); - doNothing().when(mockNotificationPublisher).publishDownloadFailure(mockDistributionClient, data, artifact, - OOPS); - - assertFalse(FALSE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, null)); - - Mockito.verify(mockDistributionClient).download(artifact); - Mockito.verify(mockNotificationPublisher).publishDownloadFailure(mockDistributionClient, data, artifact, OOPS); - - Mockito.verifyZeroInteractions(mockBabelClient, mockBabelArtifactConverter); - } - - private IDistributionClientDownloadResult createDistributionClientDownloadResult( - DistributionActionResultEnum status, String message, byte[] payload) { - IDistributionClientDownloadResult downloadResult = new DistributionClientDownloadResultImpl(status, message); - - ((DistributionClientDownloadResultImpl) downloadResult).setArtifactPayload(payload); - - return downloadResult; - } - - @Test - public void downloadArtifacts_noSuchAlgorithmExceptionFromCreatingBabelClient() throws Exception { - doCreateBabelClientFailureTest(NoSuchAlgorithmException.class); - } - - @SuppressWarnings("unchecked") - private void doCreateBabelClientFailureTest(Class exception) throws Exception { - when(mockClientFactory.create(Mockito.any())).thenThrow(exception); - - INotificationData data = getNotificationDataWithToscaCsarFile(); - IArtifactInfo artifactInfo = data.getServiceArtifacts().get(0); - setupValidDownloadCsarMocks(data, artifactInfo, new ArtifactTestUtils()); - doNothing().when(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - - assertFalse(FALSE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, null)); - - Mockito.verify(mockDistributionClient).download(artifactInfo); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifactInfo); - Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - - Mockito.verifyZeroInteractions(mockBabelArtifactConverter); - } - - @Test - public void downloadArtifacts_keyStoreExceptionFromCreatingBabelClient() throws Exception { - doCreateBabelClientFailureTest(KeyStoreException.class); - } - - @Test - public void downloadArtifacts_certificateExceptionFromCreatingBabelClient() throws Exception { - doCreateBabelClientFailureTest(CertificateException.class); - } - - @Test - public void downloadArtifacts_iOExceptionFromCreatingBabelClient() throws Exception { - doCreateBabelClientFailureTest(IOException.class); - } - - @Test - public void downloadArtifacts_unrecoverableKeyExceptionFromCreatingBabelClient() throws Exception { - doCreateBabelClientFailureTest(UnrecoverableKeyException.class); - } - - @Test - public void downloadArtifacts_keyManagementExceptionFromCreatingBabelClient() throws Exception { - doCreateBabelClientFailureTest(KeyManagementException.class); - } - - /** - * Test disabled as exception handling needs to be reworked - * - * @throws IOException - */ - @SuppressWarnings("unchecked") - @Test - public void downloadArtifacts_invalidToscaCsarFile() throws IOException, BabelServiceException { - INotificationData data = getNotificationDataWithToscaCsarFile(); - IArtifactInfo artifact = data.getServiceArtifacts().get(0); - when(mockDistributionClient.download(artifact)).thenReturn(createDistributionClientDownloadResult( - DistributionActionResultEnum.SUCCESS, null, "This is not a valid Tosca CSAR File".getBytes())); - doNothing().when(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - when(mockBabelClient.postArtifact(Matchers.any(), Matchers.anyString(), Matchers.anyString(), - Matchers.anyString())).thenThrow(BabelServiceException.class); - doNothing().when(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifact); - - assertFalse(FALSE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, null)); - - Mockito.verify(mockDistributionClient).download(artifact); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - Mockito.verify(mockBabelClient).postArtifact(Matchers.any(), Matchers.anyString(), Matchers.anyString(), - Matchers.anyString()); - Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifact); - - Mockito.verifyZeroInteractions(mockBabelArtifactConverter); - - } - - @Test - public void downloadArtifacts_invalidModelQuerySpec() { - INotificationData data = getNotificationDataWithModelQuerySpec(); - IArtifactInfo artifact = data.getServiceArtifacts().get(0); - - List modelArtifacts = new ArrayList<>(); - - when(mockDistributionClient.download(artifact)).thenReturn(createDistributionClientDownloadResult( - DistributionActionResultEnum.SUCCESS, null, "This is not a valid Model Query Spec".getBytes())); - doNothing().when(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - - assertFalse(FALSE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelArtifacts, null)); - - Mockito.verify(mockDistributionClient).download(artifact); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifact); - - Mockito.verifyZeroInteractions(mockBabelClient, mockBabelArtifactConverter); - } - - @Test - public void downloadArtifacts_validToscaCsarFile() - throws IOException, BabelServiceException, BabelArtifactParsingException { - INotificationData data = getNotificationDataWithToscaCsarFile(); - IArtifactInfo artifactInfo = data.getServiceArtifacts().get(0); - - setupValidDownloadCsarMocks(data, artifactInfo, new ArtifactTestUtils()); - - List modelArtifacts = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertTrue(TRUE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelArtifacts, catalogFiles)); - - assertTrue("There should not have been any catalog files", catalogFiles.size() == 0); - - Mockito.verify(mockDistributionClient).download(artifactInfo); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifactInfo); - Mockito.verify(mockBabelClient).postArtifact(Matchers.any(), Matchers.anyString(), Matchers.anyString(), - Matchers.anyString()); - Mockito.verify(mockBabelArtifactConverter).convertToModel(Matchers.any()); - Mockito.verify(mockBabelArtifactConverter).convertToCatalog(Matchers.any()); - } - - private void setupValidDownloadCsarMocks(INotificationData data, IArtifactInfo artifactInfo, - ArtifactTestUtils artifactTestUtils) throws IOException, BabelServiceException { - when(mockDistributionClient.download(artifactInfo)) - .thenReturn(createDistributionClientDownloadResult(DistributionActionResultEnum.SUCCESS, null, - artifactTestUtils.loadResource("compressedArtifacts/service-VscpaasTest-csar.csar"))); - when(mockBabelClient.postArtifact(Matchers.any(), Matchers.anyString(), Matchers.anyString(), - Matchers.anyString())).thenReturn(createBabelArtifacts()); - } - - private List createBabelArtifacts() { - List artifactList = new ArrayList<>(); - artifactList.add(new BabelArtifact("ModelArtifact", BabelArtifact.ArtifactType.MODEL, "Some model payload")); - artifactList.add(new BabelArtifact("VNFCArtifact", BabelArtifact.ArtifactType.VNFCATALOG, "Some VNFC payload")); - return artifactList; - } - - @Test - public void downloadArtifacts_validModelQuerySpec() - throws IOException, BabelServiceException, BabelArtifactParsingException { - ArtifactTestUtils artifactTestUtils = new ArtifactTestUtils(); - INotificationData data = getNotificationDataWithModelQuerySpec(); - IArtifactInfo artifact = data.getServiceArtifacts().get(0); - setupValidModelQuerySpecMocks(artifactTestUtils, data, artifact); - - List modelFiles = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertTrue(TRUE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelFiles, catalogFiles)); - - assertTrue("There should have been some model artifacts", !modelFiles.isEmpty()); - assertTrue("There should not have been any catalog artifacts", catalogFiles.isEmpty()); - - Mockito.verify(mockDistributionClient).download(artifact); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - - Mockito.verifyZeroInteractions(mockBabelClient, mockBabelArtifactConverter); - } - - private void setupValidModelQuerySpecMocks(ArtifactTestUtils artifactTestUtils, INotificationData data, - IArtifactInfo artifact) throws IOException { - when(mockDistributionClient.download(artifact)) - .thenReturn(createDistributionClientDownloadResult(DistributionActionResultEnum.SUCCESS, null, - artifactTestUtils.loadResource("models/named-query-wan-connector.xml"))); - doNothing().when(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - } - - @Test - public void downloadArtifacts_validCsarAndModelFiles() - throws IOException, BabelServiceException, BabelArtifactParsingException { - ArtifactTestUtils artifactTestUtils = new ArtifactTestUtils(); - INotificationData data = getNotificationDataWithOneOfEach(); - List artifacts = new ArrayList<>(); - - IArtifactInfo serviceArtifact = data.getServiceArtifacts().get(0); - IArtifactInfo modelSpecArtifact = data.getResources().get(1).getArtifacts().get(0); - - artifacts.add(serviceArtifact); - artifacts.add(modelSpecArtifact); - - setupValidDownloadCsarMocks(data, serviceArtifact, artifactTestUtils); - setupValidModelQuerySpecMocks(artifactTestUtils, data, modelSpecArtifact); - - List modelFiles = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertTrue(TRUE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, artifacts, modelFiles, catalogFiles)); - - Mockito.verify(mockDistributionClient).download(serviceArtifact); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, serviceArtifact); - Mockito.verify(mockBabelClient).postArtifact(Matchers.any(), Matchers.anyString(), Matchers.anyString(), - Matchers.anyString()); - Mockito.verify(mockBabelArtifactConverter).convertToModel(Matchers.any()); - Mockito.verify(mockBabelArtifactConverter).convertToCatalog(Matchers.any()); - - Mockito.verify(mockDistributionClient).download(modelSpecArtifact); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, - modelSpecArtifact); - - Mockito.verifyNoMoreInteractions(mockBabelClient, mockBabelArtifactConverter); - } - - @Test - @SuppressWarnings("unchecked") - public void activateCallback_toscaToModelConverterHasProcessToscaArtifactsException() throws Exception { - ArtifactTestUtils artifactTestUtils = new ArtifactTestUtils(); - INotificationData data = getNotificationDataWithToscaCsarFile(); - IArtifactInfo artifactInfo = data.getServiceArtifacts().get(0); - - when(mockDistributionClient.download(artifactInfo)) - .thenReturn(createDistributionClientDownloadResult(DistributionActionResultEnum.SUCCESS, null, - artifactTestUtils.loadResource("compressedArtifacts/service-VscpaasTest-csar.csar"))); - when(mockBabelArtifactConverter.convertToModel(Mockito.anyList())) - .thenThrow(BabelArtifactParsingException.class); - doNothing().when(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - when(mockBabelClient.postArtifact(Matchers.any(), Matchers.anyString(), Matchers.anyString(), - Matchers.anyString())).thenReturn(createBabelArtifacts()); - - List modelArtifacts = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertFalse(FALSE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelArtifacts, catalogFiles)); - - assertTrue("There should not have been any catalog files", catalogFiles.size() == 0); - - Mockito.verify(mockDistributionClient).download(artifactInfo); - Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - Mockito.verify(mockBabelClient).postArtifact(Matchers.any(), Matchers.anyString(), Matchers.anyString(), - Matchers.anyString()); - Mockito.verify(mockBabelArtifactConverter).convertToModel(Matchers.any()); - } - - @Test - public void downloadArtifacts_invalidType() - throws IOException, BabelServiceException, BabelArtifactParsingException { - INotificationData data = getNotificationDataWithInvalidType(); - IArtifactInfo artifact = data.getServiceArtifacts().get(0); - - List catalogArtifacts = new ArrayList<>(); - - when(mockDistributionClient.download(artifact)).thenReturn(createDistributionClientDownloadResult( - DistributionActionResultEnum.SUCCESS, null, "This content does not matter.".getBytes())); - doNothing().when(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - - assertFalse(FALSE_SHOULD_HAVE_BEEN_RETURNED, - downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, catalogArtifacts)); - - Mockito.verify(mockDistributionClient).download(artifact); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifact); + @Autowired ArtifactDownloadManager artifactDownloadManager; + + @Test + public void downloadArtifacts() throws Exception { + NotificationDataImpl notificationData = new NotificationDataImpl(); + notificationData.setDistributionID("distributionID"); + notificationData.setServiceVersion("2.0"); + + stubFor(get(urlEqualTo("/sdc/v1/catalog/services/DemovlbCds/1.0/artifacts/service-TestSvc-csar.csar")) + .withHeader("Accept", equalTo(MediaType.APPLICATION_OCTET_STREAM_VALUE)) + .withHeader("X-ECOMP-RequestID", matching(".+")) + .withHeader("X-ECOMP-InstanceID", equalTo("aai-ml-id-test")) + .willReturn(aResponse() + .withHeader("Content-Type", MediaType.APPLICATION_OCTET_STREAM_VALUE) + .withBodyFile("service-TestSvc-csar.csar"))); + + stubFor( + post(urlEqualTo("/services/babel-service/v1/app/generateArtifacts")) + .withHeader("X-TransactionId", equalTo("distributionID")) + .withHeader("X-FromAppId", equalTo("ModelLoader")) + .withHeader("Content-Type", equalTo(MediaType.APPLICATION_JSON_VALUE)) + .withRequestBody(matchingJsonPath("$.artifactName", equalTo("service-TestSvc-csar.csar"))) + .withRequestBody(matchingJsonPath("$.artifactVersion", equalTo("2.0"))) + .withRequestBody(matchingJsonPath("$.csar", matching(".*"))) + .willReturn( + aResponse() + .withHeader("Content-Type", MediaType.APPLICATION_JSON_VALUE) + .withBodyFile("service-TestSvc-csar-babel-response.json"))); + + ArtifactInfoImpl artifactInfo = new ArtifactInfoImpl(); + artifactInfo.setArtifactName("service-TestSvc-csar.csar"); + artifactInfo.setArtifactVersion("1.0"); + artifactInfo.setArtifactURL("/sdc/v1/catalog/services/DemovlbCds/1.0/artifacts/service-TestSvc-csar.csar"); + artifactInfo.setArtifactType("TOSCA_CSAR"); + artifactInfo.setArtifactChecksum("ZmI5NzQ1MWViZGFkMjRjZWEwNTQzY2U0OWQwYjlmYjQ="); + artifactInfo.setArtifactUUID("f6f907f1-3f45-4fb4-8cbe-15a4c6ee16db"); + List artifacts = new ArrayList<>(); + artifacts.add(artifactInfo); + List result = artifactDownloadManager.downloadArtifacts(notificationData, artifacts); + + assertEquals(1, result.size()); + ModelArtifact modelArtifact = (ModelArtifact) result.get(0); + assertEquals(ArtifactType.MODEL, modelArtifact.getType()); + assertEquals("3c8bc8e7-e387-46ed-8616-70e99e2206dc", modelArtifact.getModelInvariantId()); + assertEquals("http://org.onap.aai.inventory/v28", modelArtifact.getModelNamespace()); + assertEquals("v28", modelArtifact.getModelNamespaceVersion()); + assertEquals("71f47717-b100-4eac-940b-7d4e86a4cbb7", modelArtifact.getModelVerId()); + assertEquals(Set.of("82194af1-3c2c-485a-8f44-420e22a9eaa4|46b92144-923a-4d20-b85a-3cbd847668a9"), modelArtifact.getDependentModelIds()); + } - Mockito.verifyZeroInteractions(mockBabelClient, mockBabelArtifactConverter); - } }