diff options
Diffstat (limited to 'catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ModelBusinessLogicTest.java')
-rw-r--r-- | catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ModelBusinessLogicTest.java | 137 |
1 files changed, 125 insertions, 12 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ModelBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ModelBusinessLogicTest.java index 6c7bd5323f..b88bdfb01c 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ModelBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ModelBusinessLogicTest.java @@ -19,16 +19,25 @@ package org.openecomp.sdc.be.components.impl; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.anyMap; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; -import org.junit.jupiter.api.Order; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; +import java.util.Optional; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.junit.jupiter.api.TestInstance.Lifecycle; -import org.junit.jupiter.api.TestMethodOrder; +import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -36,10 +45,11 @@ import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.exception.BusinessException; import org.openecomp.sdc.be.model.Model; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.exception.OperationException; +import org.openecomp.sdc.be.model.jsonjanusgraph.operations.exception.ModelOperationExceptionSupplier; import org.openecomp.sdc.be.model.operations.impl.ModelOperation; +import org.openecomp.sdc.common.zip.ZipUtils; +import org.openecomp.sdc.common.zip.exception.ZipException; -@TestInstance(Lifecycle.PER_CLASS) -@TestMethodOrder(OrderAnnotation.class) class ModelBusinessLogicTest { @InjectMocks @@ -47,8 +57,9 @@ class ModelBusinessLogicTest { @Mock private ModelOperation modelOperation; private Model model; + private final Path modelImportsResourcePath = Path.of("src/test/resources/modelImports"); - @BeforeAll + @BeforeEach void setup() { MockitoAnnotations.openMocks(this); initTestData(); @@ -59,7 +70,6 @@ class ModelBusinessLogicTest { } @Test - @Order(1) void createModelTest() { when(modelOperation.createModel(model, false)).thenReturn(model); final Model result = modelBusinessLogic.createModel(model); @@ -68,13 +78,116 @@ class ModelBusinessLogicTest { } @Test - @Order(2) void createModelFailTest() { when(modelOperation.createModel(model, false)) - .thenThrow(new OperationException(ActionStatus.MODEL_ALREADY_EXISTS, model.getName())); + .thenThrow(ModelOperationExceptionSupplier.modelAlreadyExists(model.getName()).get()); final BusinessException exception = assertThrows(BusinessException.class, () -> modelBusinessLogic.createModel(model)); assertThat(((OperationException) exception).getActionStatus().name()).isEqualTo(ActionStatus.MODEL_ALREADY_EXISTS.name()); assertThat(((OperationException) exception).getParams()).contains(model.getName()); } + @Test + void createModelImportsSuccessTest() throws IOException, ZipException { + final var modelId = "modelId"; + final var resolve = modelImportsResourcePath.resolve("modelWithSubFolderAndEmptyFolder.zip"); + final var zipBytes = Files.readAllBytes(resolve); + final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(zipBytes); + final Map<String, byte[]> expectedZipMap = ZipUtils.readZip(zipBytes, false); + + when(modelOperation.findModelByName(modelId)).thenReturn(Optional.of(new Model(modelId))); + doNothing().when(modelOperation).createModelImports(eq(modelId), anyMap()); + + modelBusinessLogic.createModelImports(modelId, byteArrayInputStream); + + final ArgumentCaptor<Map<String, byte[]>> zipMapArgumentCaptor = ArgumentCaptor.forClass(Map.class); + verify(modelOperation).createModelImports(eq(modelId), zipMapArgumentCaptor.capture()); + expectedZipMap.keySet().forEach(key -> assertTrue(zipMapArgumentCaptor.getValue().containsKey(key), "Expecting import " + key)); + } + + @Test + void createModelImportsTest_invalidModel() { + //given an empty model + final var modelId = ""; + + final var emptyByteArrayInputStream = new ByteArrayInputStream(new byte[0]); + var actualOperationException = assertThrows(OperationException.class, + () -> modelBusinessLogic.createModelImports(modelId, emptyByteArrayInputStream)); + + var expectedOperationException = ModelOperationExceptionSupplier.invalidModel(modelId).get(); + assertEquals(actualOperationException.getActionStatus(), expectedOperationException.getActionStatus()); + assertEquals(actualOperationException.getParams().length, expectedOperationException.getParams().length); + assertEquals(actualOperationException.getParams()[0], expectedOperationException.getParams()[0]); + + //given a null model + actualOperationException = assertThrows(OperationException.class, + () -> modelBusinessLogic.createModelImports(null, emptyByteArrayInputStream)); + + expectedOperationException = ModelOperationExceptionSupplier.invalidModel(null).get(); + assertEquals(actualOperationException.getActionStatus(), expectedOperationException.getActionStatus()); + assertEquals(actualOperationException.getParams().length, expectedOperationException.getParams().length); + assertEquals(actualOperationException.getParams()[0], expectedOperationException.getParams()[0]); + } + + @Test + void createModelImportsTest_nullInputStream() { + final var modelId = "modelId"; + + final OperationException actualOperationException = assertThrows(OperationException.class, + () -> modelBusinessLogic.createModelImports(modelId, null)); + + final OperationException expectedOperationException = ModelOperationExceptionSupplier.emptyModelImports().get(); + assertEquals(actualOperationException.getActionStatus(), expectedOperationException.getActionStatus()); + assertEquals(actualOperationException.getParams().length, expectedOperationException.getParams().length); + } + + @Test + void createModelImportsTest_emptyModelImports() throws IOException { + final var modelId = "modelId"; + + final var resolve = modelImportsResourcePath.resolve("emptyModelImports.zip"); + final var zipBytes = Files.readAllBytes(resolve); + final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(zipBytes); + + when(modelOperation.findModelByName(modelId)).thenReturn(Optional.of(new Model(modelId))); + + final OperationException actualOperationException = assertThrows(OperationException.class, + () -> modelBusinessLogic.createModelImports(modelId, byteArrayInputStream)); + + final OperationException expectedOperationException = ModelOperationExceptionSupplier.emptyModelImports().get(); + assertEquals(actualOperationException.getActionStatus(), expectedOperationException.getActionStatus()); + assertEquals(actualOperationException.getParams().length, expectedOperationException.getParams().length); + } + + @Test + void createModelImportsTest_modelNotFound() { + final var modelId = "modelId"; + final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(new byte[0]); + + when(modelOperation.findModelByName(modelId)).thenReturn(Optional.empty()); + + final OperationException actualOperationException = assertThrows(OperationException.class, + () -> modelBusinessLogic.createModelImports(modelId, byteArrayInputStream)); + + final OperationException expectedOperationException = ModelOperationExceptionSupplier.invalidModel(modelId).get(); + assertEquals(actualOperationException.getActionStatus(), expectedOperationException.getActionStatus()); + assertEquals(actualOperationException.getParams().length, expectedOperationException.getParams().length); + } + + @Test + void findModelSuccessTest() { + final var modelId = "modelId"; + when(modelOperation.findModelByName(modelId)).thenReturn(Optional.of(new Model(modelId))); + final Optional<Model> actualModel = modelBusinessLogic.findModel(modelId); + assertTrue(actualModel.isPresent()); + assertEquals(new Model(modelId), actualModel.get()); + } + + @Test + void findModelTest_emptyOrNullModelName() { + when(modelOperation.findModelByName(anyString())).thenReturn(Optional.of(new Model())); + var actualModel = modelBusinessLogic.findModel(""); + assertTrue(actualModel.isEmpty()); + actualModel = modelBusinessLogic.findModel(null); + assertTrue(actualModel.isEmpty()); + } }
\ No newline at end of file |