X-Git-Url: https://gerrit.onap.org/r/gitweb?p=aai%2Fmodel-loader.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Forg%2Fonap%2Faai%2Fmodelloader%2Fnotification%2FTestArtifactDownloadManager.java;h=27d0aa9ff08e7a16a4a827d73cac184dbb855128;hp=c09eff5365b4c5955f86cd8ce14543742d80eb39;hb=HEAD;hpb=19f034b2554895285f12979b0f36c1629f9af984 diff --git a/src/test/java/org/onap/aai/modelloader/notification/TestArtifactDownloadManager.java b/src/test/java/org/onap/aai/modelloader/notification/TestArtifactDownloadManager.java index c09eff5..79eb94d 100644 --- a/src/test/java/org/onap/aai/modelloader/notification/TestArtifactDownloadManager.java +++ b/src/test/java/org/onap/aai/modelloader/notification/TestArtifactDownloadManager.java @@ -21,13 +21,11 @@ package org.onap.aai.modelloader.notification; import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsEmptyCollection.empty; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyList; 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; @@ -39,22 +37,26 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Properties; +import java.util.stream.Collectors; -import org.hamcrest.collection.IsEmptyCollection; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.onap.aai.babel.service.data.BabelArtifact; -import org.onap.aai.modelloader.config.ModelLoaderConfig; +import org.onap.aai.modelloader.babel.BabelArtifactService; import org.onap.aai.modelloader.entity.Artifact; +import org.onap.aai.modelloader.entity.catalog.VnfCatalogArtifact; import org.onap.aai.modelloader.entity.model.BabelArtifactParsingException; +import org.onap.aai.modelloader.entity.model.ModelArtifact; +import org.onap.aai.modelloader.entity.model.NamedQueryArtifact; +import org.onap.aai.modelloader.extraction.InvalidArchiveException; import org.onap.aai.modelloader.extraction.VnfCatalogExtractor; import org.onap.aai.modelloader.restclient.BabelServiceClient; import org.onap.aai.modelloader.restclient.BabelServiceClientException; -import org.onap.aai.modelloader.service.BabelServiceClientFactory; import org.onap.aai.modelloader.util.ArtifactTestUtils; import org.onap.sdc.api.IDistributionClient; import org.onap.sdc.api.notification.IArtifactInfo; @@ -73,19 +75,18 @@ public class TestArtifactDownloadManager { @Mock private IDistributionClient mockDistributionClient; @Mock private NotificationPublisher mockNotificationPublisher; @Mock private BabelArtifactConverter mockBabelArtifactConverter; - @Mock private BabelServiceClientFactory mockClientFactory; + @InjectMocks BabelArtifactService babelArtifactService; private VnfCatalogExtractor vnfCatalogExtractor; @BeforeEach public void setup() throws Exception { MockitoAnnotations.openMocks(this); vnfCatalogExtractor = new VnfCatalogExtractor(); - when(mockClientFactory.create(any())).thenReturn(mockBabelClient); Properties configProperties = new Properties(); configProperties.load(this.getClass().getClassLoader().getResourceAsStream("model-loader.properties")); downloadManager = new ArtifactDownloadManager(mockDistributionClient, - new ModelLoaderConfig(configProperties, "."), mockClientFactory, mockBabelArtifactConverter, mockNotificationPublisher, vnfCatalogExtractor); + mockNotificationPublisher, vnfCatalogExtractor, babelArtifactService); } @AfterEach @@ -97,15 +98,12 @@ public class TestArtifactDownloadManager { /** * Test downloading zero artifacts from SDC. + * @throws Exception */ @Test - public void testDownloadWithZeroArtifacts() { - List modelFiles = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertThat(downloadManager.downloadArtifacts(getNotificationDataWithOneService(), new ArrayList<>(), modelFiles, - catalogFiles), is(true)); - assertThat(modelFiles, is(empty())); - assertThat(catalogFiles, is(empty())); + public void testDownloadWithZeroArtifacts() throws Exception { + List artifacts = downloadManager.downloadArtifacts(getNotificationDataWithOneService(), new ArrayList<>()); + assertThat(artifacts, is(empty())); Mockito.verifyNoInteractions(mockBabelClient, mockDistributionClient, mockNotificationPublisher, mockBabelArtifactConverter); } @@ -120,7 +118,8 @@ public class TestArtifactDownloadManager { doNothing().when(mockNotificationPublisher).publishDownloadFailure(mockDistributionClient, data, artifact, errorMessage); - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, null), is(false)); + assertThrows(DownloadFailureException.class, + () -> downloadManager.downloadArtifacts(data, data.getServiceArtifacts())); Mockito.verify(mockDistributionClient).download(artifact); Mockito.verify(mockNotificationPublisher).publishDownloadFailure(mockDistributionClient, data, artifact, @@ -129,24 +128,6 @@ public class TestArtifactDownloadManager { Mockito.verifyNoInteractions(mockBabelClient, mockBabelArtifactConverter); } - @Test - public void testErrorCreatingBabelClient() throws Exception { - when(mockClientFactory.create(any())).thenThrow(new BabelServiceClientException(new Exception())); - - INotificationData data = getNotificationDataWithToscaCsarFile(); - IArtifactInfo artifactInfo = data.getServiceArtifacts().get(0); - setupValidDownloadCsarMocks(data, artifactInfo, new ArtifactTestUtils()); - doNothing().when(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, null), is(false)); - - Mockito.verify(mockDistributionClient).download(artifactInfo); - Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifactInfo); - Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - - Mockito.verifyNoInteractions(mockBabelArtifactConverter); - } - @Test public void downloadArtifacts_invalidToscaCsarFile() throws IOException, BabelServiceClientException { INotificationData data = getNotificationDataWithToscaCsarFile(); @@ -154,14 +135,15 @@ public class TestArtifactDownloadManager { 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(any(), any(), any(), any())).thenThrow(new BabelServiceClientException("")); + when(mockBabelClient.postArtifact(any(), any())).thenThrow(new BabelServiceClientException("")); doNothing().when(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifact); - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, null), is(false)); + assertThrows(ProcessToscaArtifactsException.class, + () -> downloadManager.downloadArtifacts(data, data.getServiceArtifacts())); Mockito.verify(mockDistributionClient).download(artifact); Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - Mockito.verify(mockBabelClient).postArtifact(any(), any(), any(), any()); + Mockito.verify(mockBabelClient).postArtifact(any(), any()); Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifact); Mockito.verifyNoInteractions(mockBabelArtifactConverter); @@ -179,8 +161,8 @@ public class TestArtifactDownloadManager { DistributionActionResultEnum.SUCCESS, null, "This is not a valid Model Query Spec".getBytes())); doNothing().when(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelArtifacts, null), - is(false)); + assertThrows(BabelArtifactParsingException.class, + () -> downloadManager.downloadArtifacts(data, data.getServiceArtifacts())); Mockito.verify(mockDistributionClient).download(artifact); Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); @@ -191,31 +173,36 @@ public class TestArtifactDownloadManager { @Test public void downloadArtifacts_validToscaCsarFile() - throws IOException, BabelServiceClientException, BabelArtifactParsingException { + throws Exception { INotificationData data = getNotificationDataWithToscaCsarFile(); IArtifactInfo artifactInfo = data.getServiceArtifacts().get(0); setupValidDownloadCsarMocks(data, artifactInfo, new ArtifactTestUtils()); - List modelArtifacts = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelArtifacts, catalogFiles), - is(true)); - assertThat(catalogFiles.size(), is(0)); + List artifacts = downloadManager.downloadArtifacts(data, data.getServiceArtifacts()); + List modelArtifacts = artifacts.stream().filter(ModelArtifact.class::isInstance) + .collect(Collectors.toList()); + List catalogArtifacts = artifacts.stream().filter(VnfCatalogArtifact.class::isInstance) + .collect(Collectors.toList()); + assertThat(modelArtifacts.size(), is(1)); + assertThat(catalogArtifacts.size(), is(1)); Mockito.verify(mockDistributionClient).download(artifactInfo); Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifactInfo); - Mockito.verify(mockBabelClient).postArtifact(any(), any(), any(), any()); + Mockito.verify(mockBabelClient).postArtifact(any(), any()); Mockito.verify(mockBabelArtifactConverter).convertToModel(any()); Mockito.verify(mockBabelArtifactConverter).convertToCatalog(any()); } private void setupValidDownloadCsarMocks(INotificationData data, IArtifactInfo artifactInfo, - ArtifactTestUtils artifactTestUtils) throws IOException, BabelServiceClientException { + ArtifactTestUtils artifactTestUtils) throws IOException, BabelServiceClientException, BabelArtifactParsingException { when(mockDistributionClient.download(artifactInfo)) .thenReturn(createDistributionClientDownloadResult(DistributionActionResultEnum.SUCCESS, null, artifactTestUtils.loadResource("compressedArtifacts/service-VscpaasTest-csar.csar"))); - when(mockBabelClient.postArtifact(any(), any(), any(), any())).thenReturn(createBabelArtifacts()); + when(mockBabelClient.postArtifact(any(), any())).thenReturn(createBabelArtifacts()); + + when(mockBabelArtifactConverter.convertToModel(any(BabelArtifact.class))).thenReturn(List.of(new ModelArtifact())); + when(mockBabelArtifactConverter.convertToCatalog(any(BabelArtifact.class))).thenReturn(new VnfCatalogArtifact("")); } private List createBabelArtifacts() { @@ -227,18 +214,19 @@ public class TestArtifactDownloadManager { @Test public void downloadArtifactsWithValidModelQuerySpec() - throws IOException, BabelServiceClientException, BabelArtifactParsingException { + throws Exception { INotificationData data = getNotificationDataWithModelQuerySpec(); IArtifactInfo artifact = data.getServiceArtifacts().get(0); setupValidModelQuerySpecMocks(new ArtifactTestUtils(), data, artifact); - List modelFiles = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelFiles, catalogFiles), - is(true)); + List artifacts = downloadManager.downloadArtifacts(data, data.getServiceArtifacts()); + List namedQueryArtifacts = artifacts.stream().filter(NamedQueryArtifact.class::isInstance) + .collect(Collectors.toList()); + List catalogArtifacts = artifacts.stream().filter(VnfCatalogArtifact.class::isInstance) + .collect(Collectors.toList()); - assertThat(modelFiles, is(not(IsEmptyCollection.empty()))); - assertThat(catalogFiles, is(empty())); + assertThat(namedQueryArtifacts.size(), is(1)); + assertThat(catalogArtifacts, is(empty())); Mockito.verify(mockDistributionClient).download(artifact); Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); @@ -256,27 +244,31 @@ public class TestArtifactDownloadManager { @Test public void downloadArtifacts_validCsarAndModelFiles() - throws IOException, BabelServiceClientException, BabelArtifactParsingException { + throws Exception { ArtifactTestUtils artifactTestUtils = new ArtifactTestUtils(); INotificationData data = getNotificationDataWithOneOfEach(); - List artifacts = new ArrayList<>(); + List artifactInfos = new ArrayList<>(); IArtifactInfo serviceArtifact = data.getServiceArtifacts().get(0); IArtifactInfo modelSpecArtifact = data.getResources().get(1).getArtifacts().get(0); - artifacts.add(serviceArtifact); - artifacts.add(modelSpecArtifact); + artifactInfos.add(serviceArtifact); + artifactInfos.add(modelSpecArtifact); setupValidDownloadCsarMocks(data, serviceArtifact, artifactTestUtils); setupValidModelQuerySpecMocks(artifactTestUtils, data, modelSpecArtifact); - List modelFiles = new ArrayList<>(); - List catalogFiles = new ArrayList<>(); - assertThat(downloadManager.downloadArtifacts(data, artifacts, modelFiles, catalogFiles), is(true)); + List artifacts = downloadManager.downloadArtifacts(data, artifactInfos); + List modelArtifacts = artifacts.stream().filter(artifact -> !(artifact instanceof VnfCatalogArtifact)) + .collect(Collectors.toList()); + List catalogArtifacts = artifacts.stream().filter(VnfCatalogArtifact.class::isInstance) + .collect(Collectors.toList()); + assertThat(modelArtifacts.size(), is(2)); + assertThat(catalogArtifacts.size(), is(1)); Mockito.verify(mockDistributionClient).download(serviceArtifact); Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, serviceArtifact); - Mockito.verify(mockBabelClient).postArtifact(any(), any(), any(), any()); + Mockito.verify(mockBabelClient).postArtifact(any(), any()); Mockito.verify(mockBabelArtifactConverter).convertToModel(any()); Mockito.verify(mockBabelArtifactConverter).convertToCatalog(any()); @@ -296,21 +288,22 @@ public class TestArtifactDownloadManager { when(mockDistributionClient.download(artifactInfo)) .thenReturn(createDistributionClientDownloadResult(DistributionActionResultEnum.SUCCESS, null, artifactTestUtils.loadResource("compressedArtifacts/service-VscpaasTest-csar.csar"))); - when(mockBabelArtifactConverter.convertToModel(anyList())) + when(mockBabelArtifactConverter.convertToModel(any())) .thenThrow(BabelArtifactParsingException.class); doNothing().when(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - when(mockBabelClient.postArtifact(any(), any(), any(), any())).thenReturn(createBabelArtifacts()); + when(mockBabelClient.postArtifact(any(), any())).thenReturn(createBabelArtifacts()); List modelArtifacts = new ArrayList<>(); List catalogFiles = new ArrayList<>(); - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), modelArtifacts, catalogFiles), - is(false)); + assertThrows(ProcessToscaArtifactsException.class, + () -> downloadManager.downloadArtifacts(data, data.getServiceArtifacts())); + assertThat(modelArtifacts, is(empty())); assertThat(catalogFiles, is(empty())); Mockito.verify(mockDistributionClient).download(artifactInfo); Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifactInfo); - Mockito.verify(mockBabelClient).postArtifact(any(), any(), any(), any()); + Mockito.verify(mockBabelClient).postArtifact(any(), any()); Mockito.verify(mockBabelArtifactConverter).convertToModel(any()); } @@ -324,8 +317,9 @@ public class TestArtifactDownloadManager { DistributionActionResultEnum.SUCCESS, null, "This content does not matter.".getBytes())); doNothing().when(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); - assertThat(downloadManager.downloadArtifacts(data, data.getServiceArtifacts(), null, new ArrayList<>()), - is(false)); + assertThrows(InvalidArchiveException.class, + () -> downloadManager.downloadArtifacts(data, data.getServiceArtifacts())); + Mockito.verify(mockDistributionClient).download(artifact); Mockito.verify(mockNotificationPublisher).publishDownloadSuccess(mockDistributionClient, data, artifact); Mockito.verify(mockNotificationPublisher).publishDeployFailure(mockDistributionClient, data, artifact);