X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=rapp-manager-models%2Fsrc%2Ftest%2Fjava%2Fcom%2Foransc%2Frappmanager%2Fmodels%2Fcsar%2FRappCsarConfigurationHandlerTest.java;h=9f1893b4d8c60977dc415b4550b258995a0c7473;hb=7e301b523d66508f8493f6873e36f0d60e8caaf4;hp=10f5d966352bba94fbea1246002df16367df9aff;hpb=a071d6befe8d38a5e589dffbbf1dc3904ff3aa79;p=nonrtric%2Fplt%2Frappmanager.git diff --git a/rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/RappCsarConfigurationHandlerTest.java b/rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/RappCsarConfigurationHandlerTest.java index 10f5d96..9f1893b 100755 --- a/rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/RappCsarConfigurationHandlerTest.java +++ b/rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/RappCsarConfigurationHandlerTest.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START====================================================================== * Copyright (C) 2023 Nordix Foundation. All rights reserved. + * Copyright (C) 2024 OpenInfra Foundation Europe. 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. @@ -22,57 +23,48 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonSyntaxException; import com.oransc.rappmanager.models.rapp.Rapp; import com.oransc.rappmanager.models.rapp.RappResources; import com.oransc.rappmanager.models.rappinstance.RappACMInstance; +import com.oransc.rappmanager.models.rappinstance.RappDMEInstance; import com.oransc.rappmanager.models.rappinstance.RappSMEInstance; +import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.util.List; +import java.util.Set; import java.util.UUID; -import org.apache.http.entity.ContentType; +import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.json.JSONException; import org.json.JSONObject; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.mock.web.MockMultipartFile; +import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.test.context.ContextConfiguration; -import org.springframework.web.multipart.MultipartFile; @SpringBootTest -@ContextConfiguration(classes = RappCsarConfigurationHandler.class) -public class RappCsarConfigurationHandlerTest { +@ContextConfiguration(classes = {ObjectMapper.class, RappCsarConfigurationHandler.class}) +class RappCsarConfigurationHandlerTest { - @Autowired + @SpyBean RappCsarConfigurationHandler rappCsarConfigurationHandler; String validCsarFileLocation = "src/test/resources/"; - private final String validRappFile = "valid-rapp-package.csar"; - private final String invalidRappFile = "invalid-rapp-package.csar"; - - @Test - void testCsarPackageValidationSuccess() throws IOException { - String rappCsarPath = validCsarFileLocation + File.separator + validRappFile; - MultipartFile multipartFile = - new MockMultipartFile(rappCsarPath, rappCsarPath, ContentType.MULTIPART_FORM_DATA.getMimeType(), - new FileInputStream(rappCsarPath)); - assertEquals(Boolean.TRUE, rappCsarConfigurationHandler.isValidRappPackage(multipartFile)); - } + private final String invalidRappNoAsdFile = "invalid-rapp-package-no-asd-yaml.csar"; - @Test - void testCsarPackageValidationFailure() throws IOException { - String rappCsarPath = validCsarFileLocation + File.separator + invalidRappFile; - MultipartFile multipartFile = - new MockMultipartFile(rappCsarPath, rappCsarPath, ContentType.MULTIPART_FORM_DATA.getMimeType(), - new FileInputStream(rappCsarPath)); - assertEquals(Boolean.FALSE, rappCsarConfigurationHandler.isValidRappPackage(multipartFile)); - } + private final String invalidRappEmptyAsdFile = "invalid-rapp-package-empty-asd-yaml.csar"; @Test void testCsarInstantiationPayload() throws JSONException { @@ -88,16 +80,30 @@ public class RappCsarConfigurationHandlerTest { @Test void testFileListing() { File file = new File(validCsarFileLocation + validRappFile); - List fileListFromCsar = - rappCsarConfigurationHandler.getFileListFromCsar(file, "Files/Sme/serviceapis/"); - assertThat(fileListFromCsar.size()).isEqualTo(2); + Set fileListFromCsar = rappCsarConfigurationHandler.getFileListFromCsar(file, "Files/Sme/serviceapis/"); + assertThat(fileListFromCsar).hasSize(2); } @Test void testInvalidFileListing() { File file = new File(validCsarFileLocation); - List fileListFromCsar = rappCsarConfigurationHandler.getFileListFromCsar(file, null); - assertThat(fileListFromCsar.size()).isEqualTo(0); + Set fileListFromCsar = rappCsarConfigurationHandler.getFileListFromCsar(file, null); + assertThat(fileListFromCsar).isEmpty(); + } + + @Test + void testInvalidFileListingFromCsar() { + File file = new File("InvalidFile"); + ByteArrayOutputStream fileByteArray = rappCsarConfigurationHandler.getFileFromCsar(file, null); + assertThat(fileByteArray.size()).isZero(); + } + + @Test + void testInvalidZipStreamGetFromCsar() throws IOException { + ZipArchiveInputStream zipArchiveInputStream = mock(ZipArchiveInputStream.class); + doThrow(new IOException()).when(zipArchiveInputStream).getNextEntry(); + ByteArrayOutputStream fileByteArray = rappCsarConfigurationHandler.getFileFromCsar(zipArchiveInputStream, null); + assertThat(fileByteArray.size()).isZero(); } @Test @@ -109,20 +115,25 @@ public class RappCsarConfigurationHandlerTest { RappResources rappResources = rappCsarConfigurationHandler.getRappResource(rapp); assertThat(rappResources).isNotNull(); assertNotNull(rappResources.getAcm().getCompositionDefinitions()); - assertThat(rappResources.getAcm().getCompositionInstances().size()).isEqualTo(3); - assertThat(rappResources.getSme().getProviderFunctions().size()).isEqualTo(4); - assertThat(rappResources.getSme().getServiceApis().size()).isEqualTo(2); - assertThat(rappResources.getSme().getInvokers().size()).isEqualTo(2); + assertThat(rappResources.getAcm().getCompositionInstances()).hasSize(4); + assertThat(rappResources.getSme().getProviderFunctions()).hasSize(4); + assertThat(rappResources.getSme().getServiceApis()).hasSize(2); + assertThat(rappResources.getSme().getInvokers()).hasSize(2); + assertThat(rappResources.getDme().getProducerInfoTypes()).hasSize(2); + assertThat(rappResources.getDme().getConsumerInfoTypes()).hasSize(2); + assertThat(rappResources.getDme().getInfoProducers()).hasSize(2); + assertThat(rappResources.getDme().getInfoConsumers()).hasSize(2); } @Test void testListInvalidResources() { UUID rappId = UUID.randomUUID(); - Rapp rapp = Rapp.builder().rappId(rappId).name("").build(); + Rapp rapp = Rapp.builder().rappId(rappId).name("").packageName("").packageLocation("").build(); RappResources rappResources = rappCsarConfigurationHandler.getRappResource(rapp); assertThat(rappResources).isNotNull(); assertNull(rappResources.getAcm()); assertNull(rappResources.getSme()); + assertNull(rappResources.getDme()); } @Test @@ -130,7 +141,7 @@ public class RappCsarConfigurationHandlerTest { UUID rappId = UUID.randomUUID(); RappResources rappResources = new RappResources(); rappResources.setAcm(RappResources.ACMResources.builder().compositionDefinitions("compositions") - .compositionInstances(List.of()).build()); + .compositionInstances(Set.of()).build()); Rapp rapp = Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) .rappResources(rappResources).build(); @@ -143,7 +154,7 @@ public class RappCsarConfigurationHandlerTest { UUID rappId = UUID.randomUUID(); RappResources rappResources = new RappResources(); rappResources.setAcm(RappResources.ACMResources.builder().compositionDefinitions("invalidcomposition") - .compositionInstances(List.of()).build()); + .compositionInstances(Set.of()).build()); Rapp rapp = Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) .rappResources(rappResources).build(); @@ -188,4 +199,97 @@ public class RappCsarConfigurationHandlerTest { assertNotNull(smeProviderDomainPayload); } + @Test + void testGetDmeProducerInfoTypePayload() { + UUID rappId = UUID.randomUUID(); + RappDMEInstance rappDMEInstance = new RappDMEInstance(); + rappDMEInstance.setInfoTypesProducer(Set.of("json-file-data-from-filestore")); + Rapp rapp = + Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) + .build(); + String dmeInfoTypePayload = rappCsarConfigurationHandler.getDmeProducerInfoTypePayload(rapp, + rappDMEInstance.getInfoTypesProducer().iterator().next()); + assertNotNull(dmeInfoTypePayload); + } + + @Test + void testGetDmeConsumerInfoTypePayload() { + UUID rappId = UUID.randomUUID(); + RappDMEInstance rappDMEInstance = new RappDMEInstance(); + rappDMEInstance.setInfoTypeConsumer("json-file-data-from-filestore"); + Rapp rapp = + Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) + .build(); + String dmeInfoTypePayload = + rappCsarConfigurationHandler.getDmeConsumerInfoTypePayload(rapp, rappDMEInstance.getInfoTypeConsumer()); + assertNotNull(dmeInfoTypePayload); + } + + @Test + void testGetDmeInfoProducerPayload() { + UUID rappId = UUID.randomUUID(); + RappDMEInstance rappDMEInstance = new RappDMEInstance(); + rappDMEInstance.setInfoProducer("json-file-data-producer"); + Rapp rapp = + Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) + .build(); + String dmeInfoProducerPayload = + rappCsarConfigurationHandler.getDmeInfoProducerPayload(rapp, rappDMEInstance.getInfoProducer()); + assertNotNull(dmeInfoProducerPayload); + } + + @Test + void testGetDmeInfoConsumerPayload() { + UUID rappId = UUID.randomUUID(); + RappDMEInstance rappDMEInstance = new RappDMEInstance(); + rappDMEInstance.setInfoConsumer("json-file-consumer"); + Rapp rapp = + Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation) + .build(); + String dmeInfoConsumerPayload = + rappCsarConfigurationHandler.getDmeInfoConsumerPayload(rapp, rappDMEInstance.getInfoConsumer()); + assertNotNull(dmeInfoConsumerPayload); + } + + @Test + void testGetAsdMetadata() { + Rapp rapp = Rapp.builder().name("").packageName(validRappFile).packageLocation(validCsarFileLocation).build(); + AsdMetadata asdMetadata = rappCsarConfigurationHandler.getAsdMetadata(rapp); + assertEquals("123e4567-e89b-12d3-a456-426614174000", asdMetadata.getDescriptorId()); + assertEquals("040eff2a-eb1a-4aff-bd46-37ce38092985", asdMetadata.getDescriptorInvariantId()); + assertEquals(2, asdMetadata.getDeploymentItems().size()); + } + + @ParameterizedTest + @ValueSource(strings = {invalidRappNoAsdFile, invalidRappEmptyAsdFile}) + void testGetAsdMetadataNoAsd(String packageName) { + Rapp rapp = Rapp.builder().name("").packageName(packageName).packageLocation(validCsarFileLocation).build(); + assertThat(rappCsarConfigurationHandler.getAsdMetadata(rapp)).isNotNull(); + } + + @Test + void testGetAsdMetadataException() throws JsonProcessingException { + Rapp rapp = Rapp.builder().name("").packageName(validRappFile).packageLocation(validCsarFileLocation).build(); + doThrow(new JsonSyntaxException("")).when(rappCsarConfigurationHandler).getAsdContentNode(any()); + assertNull(rappCsarConfigurationHandler.getAsdMetadata(rapp).getDescriptorId()); + assertNull(rappCsarConfigurationHandler.getAsdMetadata(rapp).getDescriptorInvariantId()); + assertThat(rappCsarConfigurationHandler.getAsdMetadata(rapp).getDeploymentItems()).isNull(); + } + + @Test + void testGetAsdMetadataNullAsdContent() throws JsonProcessingException { + Rapp rapp = Rapp.builder().name("").packageName(validRappFile).packageLocation(validCsarFileLocation).build(); + doReturn(null).when(rappCsarConfigurationHandler).getAsdContentNode(any()); + assertNull(rappCsarConfigurationHandler.getAsdMetadata(rapp).getDescriptorId()); + assertNull(rappCsarConfigurationHandler.getAsdMetadata(rapp).getDescriptorInvariantId()); + assertThat(rappCsarConfigurationHandler.getAsdMetadata(rapp).getDeploymentItems()).isNull(); + } + + @Test + void testGetArtifactPayload() { + Rapp rapp = Rapp.builder().name("").packageName(validRappFile).packageLocation(validCsarFileLocation).build(); + assertNotNull(rappCsarConfigurationHandler.getArtifactPayload(rapp, + "Artifacts/Deployment/HELM/ransliceassurance-1.0.0.tgz")); + + } }