/*-
* ============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.
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.Mockito.mock;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doThrow;
+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.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.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)
+@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";
+ private final String invalidRappNoAsdFile = "invalid-rapp-package-no-asd-yaml.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));
- }
-
- @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));
- }
-
- @Test
- void testCsarPackageValidationFailureWithoutOrginalName() throws IOException {
- MultipartFile multipartFile = mock(MultipartFile.class);
- assertEquals(Boolean.FALSE, rappCsarConfigurationHandler.isValidRappPackage(multipartFile));
- }
-
- @Test
- void testInvalidCsarFileExist() {
- MultipartFile multipartFile = mock(MultipartFile.class);
- assertEquals(Boolean.FALSE, rappCsarConfigurationHandler.isFileExistsInCsar(multipartFile, "INVALID_LOCATION"));
- }
+ private final String invalidRappEmptyAsdFile = "invalid-rapp-package-empty-asd-yaml.csar";
@Test
void testCsarInstantiationPayload() throws JSONException {
@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());
assertNotNull(dmeInfoConsumerPayload);
}
+ @Test
+ void testListDeploymentItems() {
+ Rapp rapp = Rapp.builder().name("").packageName(validRappFile).packageLocation(validCsarFileLocation).build();
+ List<DeploymentItem> deploymentItems = rappCsarConfigurationHandler.getDeploymentItems(rapp);
+ assertEquals(2, deploymentItems.size());
+ }
+
+ @ParameterizedTest
+ @ValueSource(strings = {invalidRappNoAsdFile, invalidRappEmptyAsdFile})
+ void testListDeploymentItemsNoAsd(String packageName) {
+ Rapp rapp = Rapp.builder().name("").packageName(packageName).packageLocation(validCsarFileLocation).build();
+ assertThat(rappCsarConfigurationHandler.getDeploymentItems(rapp)).isEmpty();
+ }
+
+ @Test
+ void testListDeploymentItemsWithException() throws JsonProcessingException {
+ Rapp rapp = Rapp.builder().name("").packageName(validRappFile).packageLocation(validCsarFileLocation).build();
+ doThrow(new JsonSyntaxException("")).when(rappCsarConfigurationHandler).getAsdContentNode(any());
+ assertThat(rappCsarConfigurationHandler.getDeploymentItems(rapp)).isEmpty();
+ }
+
+ @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"));
+
+ }
}