From: akshay.khairnar@t-systems.com Date: Thu, 4 Sep 2025 11:18:01 +0000 (+0200) Subject: [AAI] Improve test coverage for A&AI component aai-resources X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;p=aai%2Fresources.git [AAI] Improve test coverage for A&AI component aai-resources Issue-ID: AAI-4185 Change-Id: I5a2b0ba8cb2b756fec28cc6469fe5a9a367efedc Signed-off-by: akshay.khairnar@t-systems.com --- diff --git a/aai-resources/src/main/java/org/onap/aai/tenantisolation/DataImportTasks.java b/aai-resources/src/main/java/org/onap/aai/tenantisolation/DataImportTasks.java index 8b0a9aee..ede04b73 100644 --- a/aai-resources/src/main/java/org/onap/aai/tenantisolation/DataImportTasks.java +++ b/aai-resources/src/main/java/org/onap/aai/tenantisolation/DataImportTasks.java @@ -119,7 +119,7 @@ public class DataImportTasks { * * @return true if another process is running, false if not */ - private static boolean isDataImportRunning() { + static boolean isDataImportRunning() { Process process = null; @@ -153,7 +153,7 @@ public class DataImportTasks { * The findPayExportedPayload method tries to find the latest exported payload. * Also deletes the old files if any or any other file in this directory */ - private static File findExportedPayload() throws AAIException { + static File findExportedPayload() throws AAIException { String targetDir = AAIConstants.AAI_HOME_BUNDLECONFIG + AAIConfig.get("aai.dataimport.input.location"); File targetDirFile = new File(targetDir); File payloadFile = null; @@ -259,7 +259,7 @@ public class DataImportTasks { * * @param script The script/command arguments */ - private static void runAddManualDataScript(String... script) { + static void runAddManualDataScript(String... script) { Process process = null; try { process = new ProcessBuilder().command(script).start(); diff --git a/aai-resources/src/test/java/org/onap/aai/tenantisolation/DataImportTasksTest.java b/aai-resources/src/test/java/org/onap/aai/tenantisolation/DataImportTasksTest.java index 930d1ae3..e39181a8 100644 --- a/aai-resources/src/test/java/org/onap/aai/tenantisolation/DataImportTasksTest.java +++ b/aai-resources/src/test/java/org/onap/aai/tenantisolation/DataImportTasksTest.java @@ -20,15 +20,20 @@ package org.onap.aai.tenantisolation; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.Mockito.mockStatic; +import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; + +import org.mockito.MockedStatic; +import static org.mockito.Mockito.*; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.lang.reflect.Method; +import java.lang.reflect.Field; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -132,4 +137,68 @@ class DataImportTasksTest { assertTrue(result, "Should return false when unpacking fails"); } + @Test + void testImportTask_FullFlow() throws Exception { + try (MockedStatic mockedAAIConfig = mockStatic(AAIConfig.class); + MockedStatic mockedDataImportTasks = mockStatic(DataImportTasks.class)) { + + mockedAAIConfig.when(() -> AAIConfig.get("aai.dataimport.enable")) + .thenReturn("true"); + + Path inputDir = Files.createTempDirectory("withGoodPayload"); + mockedAAIConfig.when(() -> AAIConfig.get("aai.dataimport.input.location")) + .thenReturn(inputDir.toString()); + + // create a "payload" tar.gz file + Path fakePayload = inputDir.resolve("fullPayload.tar.gz"); + Files.createFile(fakePayload); + + // stub static methods + mockedDataImportTasks.when(() -> DataImportTasks.findExportedPayload()) + .thenReturn(fakePayload.toFile()); + + mockedDataImportTasks.when(() -> DataImportTasks.unpackPayloadFile(fakePayload.toString())) + .thenReturn(true); + + mockedDataImportTasks.when(() -> DataImportTasks.runAddManualDataScript(new String[] { + AAIConstants.AAI_HOME + AAIConstants.AAI_FILESEP + "bin" + + AAIConstants.AAI_FILESEP + "install" + + AAIConstants.AAI_FILESEP + "addManualData.sh", + "tenant_isolation" + })).thenAnswer(invocation -> null); // no-op + + DataImportTasks task = new DataImportTasks(); + + assertDoesNotThrow(task::importTask); + + // verify cleanup + assert !fakePayload.toFile().exists(); + } + } + + @Test + void testRunAddManualDataScript_WithValidCommand() throws Exception { + Method method = DataImportTasks.class.getDeclaredMethod( + "runAddManualDataScript", String[].class + ); + method.setAccessible(true); + + // Using a harmless command that exists on most systems + assertDoesNotThrow(() -> + method.invoke(null, (Object) new String[]{"echo", "hello"}) + ); + } + + @Test + void testRunAddManualDataScript_WithInvalidCommand() throws Exception { + Method method = DataImportTasks.class.getDeclaredMethod( + "runAddManualDataScript", String[].class + ); + method.setAccessible(true); + + // Invalid command to trigger the catch block + assertDoesNotThrow(() -> + method.invoke(null, (Object) new String[]{"nonexistent-command-xyz"}) + ); + } } diff --git a/pom.xml b/pom.xml index 331c39a3..762b8d3c 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ org.onap.aai.aai-common aai-parent - 1.16.1-SNAPSHOT + 1.16.1 org.onap.aai.resources resources @@ -49,7 +49,7 @@ /content/repositories/staging/ ${project.version} - 1.16.1-SNAPSHOT + 1.16.1 1.12.7 3.11.0.3922