diff options
Diffstat (limited to 'catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogicTest.java')
-rw-r--r-- | catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogicTest.java | 633 |
1 files changed, 451 insertions, 182 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogicTest.java index 553877773f..0b4a30ec94 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogicTest.java @@ -44,6 +44,7 @@ import org.openecomp.sdc.be.MockGenerator; import org.openecomp.sdc.be.components.ArtifactsResolver; import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationEnum; import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationInfo; +import org.openecomp.sdc.be.components.impl.exceptions.ComponentException; import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic; import org.openecomp.sdc.be.components.utils.ArtifactBuilder; import org.openecomp.sdc.be.components.utils.ObjectGenerator; @@ -53,9 +54,9 @@ import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao; import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus; +import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao; import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; -import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition; import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition; @@ -81,26 +82,19 @@ import org.openecomp.sdc.be.model.ResourceMetadataDefinition; import org.openecomp.sdc.be.model.Service; import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache; -import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations; -import org.openecomp.sdc.be.model.jsonjanusgraph.operations.InterfaceOperation; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.IElementOperation; import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation; -import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation; -import org.openecomp.sdc.be.model.operations.api.IGroupOperation; -import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation; import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation; -import org.openecomp.sdc.be.model.operations.api.IUserAdminOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation; -import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation; -import org.openecomp.sdc.be.resources.data.ESArtifactData; +import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation; +import org.openecomp.sdc.be.resources.data.DAOArtifactData; import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum; import org.openecomp.sdc.be.servlets.RepresentationUtils; import org.openecomp.sdc.be.tosca.CsarUtils; import org.openecomp.sdc.be.tosca.ToscaExportHandler; -import org.openecomp.sdc.be.user.IUserBusinessLogic; import org.openecomp.sdc.be.user.Role; import org.openecomp.sdc.be.user.UserBusinessLogic; import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum; @@ -114,15 +108,19 @@ import org.openecomp.sdc.exception.ResponseFormat; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyList; @@ -137,19 +135,21 @@ import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_V public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ - public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", + private static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis()); - public static final String RESOURCE_NAME = "My-Resource_Name with space"; + private final static String RESOURCE_INSTANCE_NAME = "Service-111"; + private final static String INSTANCE_ID = "S-123-444-ghghghg"; + + private final static String ARTIFACT_NAME = "service-Myservice-template.yml"; + private final static String ARTIFACT_LABEL = "assettoscatemplate"; + private final static String ES_ARTIFACT_ID = "123123dfgdfgd0"; + private final static byte[] PAYLOAD = "some payload".getBytes(); + private static final String RESOURCE_NAME = "My-Resource_Name with space"; + private static final String RESOURCE_CATEGORY1 = "Network Layer 2-3"; + private static final String RESOURCE_SUBCATEGORY = "Router"; public static final String RESOURCE_CATEGORY = "Network Layer 2-3/Router"; - public static final String RESOURCE_CATEGORY1 = "Network Layer 2-3"; - public static final String RESOURCE_SUBCATEGORY = "Router"; public static final Resource resource = Mockito.mock(Resource.class); - private static final String RESOURCE_INSTANCE_NAME = "Service-111"; - private static final String INSTANCE_ID = "S-123-444-ghghghg"; - private static final String ARTIFACT_NAME = "service-Myservice-template.yml"; - private static final String ARTIFACT_LABEL = "assettoscatemplate"; - private static final String ES_ARTIFACT_ID = "123123dfgdfgd0"; - private static final byte[] PAYLOAD = "some payload".getBytes(); + static ConfigurationSource configurationSource = new FSConfigurationSource( ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be"); static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource); @@ -173,7 +173,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ @Mock private IInterfaceLifecycleOperation lifecycleOperation; @Mock - private IUserAdminOperation userOperation; + private UserAdminOperation userOperation; @Mock private IElementOperation elementOperation; @Mock @@ -195,7 +195,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ private Gson gson = new GsonBuilder().setPrettyPrinting().create(); private static List<ArtifactType> getAllTypes() { - List<ArtifactType> artifactTypes = new ArrayList<>(); + List<ArtifactType> artifactTypes = new ArrayList<ArtifactType>(); List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration() .getArtifactTypes(); for (String artifactType : artifactTypesList) { @@ -224,9 +224,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean())) .thenReturn(notFoundInterfaces); - Either<User, ActionStatus> getUserResult = Either.left(USER); - - when(userOperation.getUserData("jh0003", false)).thenReturn(getUserResult); + when(userOperation.getUserData("jh0003", false)).thenReturn(Either.left(USER)); Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes()); when(elementOperation.getAllArtifactTypes()).thenReturn(getType); @@ -245,7 +243,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ Either<Resource, StorageOperationStatus> eitherCreate = Either.left(resourceResponse); when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate); when(toscaOperationFacade.validateCsarUuidUniqueness(Mockito.anyString())).thenReturn(StorageOperationStatus.OK); - Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<>(); + Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<String, DataTypeDefinition>(); when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes)); when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK); @@ -274,7 +272,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ } ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, - ArtifactDefinition.class); + ArtifactDefinition.class, false); assertEquals(ad, afterConvert); } @@ -320,6 +318,209 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ } @Test + public void testUpdateCIDeploymentArtifactTimeout() { + ArtifactDefinition heatArtifact = new ArtifactDefinition(); + ArtifactDefinition envArtifact = new ArtifactDefinition(); + ArtifactDefinition origEnvArtifact = new ArtifactDefinition(); + ComponentInstance ci = new ComponentInstance(); + ci.setUniqueId("ciid"); + ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact)); + GroupInstance groupInstance = new GroupInstance(); + groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId()))); + groupInstance.setCustomizationUUID("custUid"); + groupInstance.setUniqueId("guid"); + List<GroupInstance> groupInstances = new ArrayList<>(); + groupInstances.addAll(Arrays.asList(groupInstance)); + ci.setGroupInstances(groupInstances); + Service service = new Service(); + service.setComponentInstances(Collections.singletonList(ci)); + service.setUniqueId("suid"); + + when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service, + heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact)); + when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId())) + .thenReturn(StorageOperationStatus.OK); + when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class))) + .thenReturn(Either.left(new ArrayList())); + when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid")))) + .thenReturn(StorageOperationStatus.OK); + artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE), + "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true); + assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(envArtifact.getTimeout()); + assertThat(ci.getDeploymentArtifacts().get("HEAT_ENV").getTimeout()).isEqualTo(origEnvArtifact.getTimeout()); + } + + @Test + public void testUpdateCIDeploymentTimeout_invalidTimeout() { + ArtifactDefinition heatArtifact = new ArtifactDefinition(); + ArtifactDefinition envArtifact = new ArtifactDefinition(); + ArtifactDefinition origEnvArtifact = new ArtifactDefinition(); + ComponentInstance ci = new ComponentInstance(); + ci.setUniqueId("ciid"); + ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact)); + GroupInstance groupInstance = new GroupInstance(); + groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId()))); + groupInstance.setCustomizationUUID("custUid"); + groupInstance.setUniqueId("guid"); + List<GroupInstance> groupInstances = new ArrayList<>(); + groupInstances.addAll(Arrays.asList(groupInstance)); + ci.setGroupInstances(groupInstances); + Service service = new Service(); + service.setComponentInstances(Collections.singletonList(ci)); + service.setUniqueId("suid"); + envArtifact.setTimeout(130); + + when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service, + heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact)); + when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId())) + .thenReturn(StorageOperationStatus.OK); + when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class))) + .thenReturn(Either.left(new ArrayList())); + when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid")))) + .thenReturn(StorageOperationStatus.OK); + try { + artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE), + "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true); + } catch (ComponentException exp) { + assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT); + return; + } + fail(); + } + + @Test + public void testUpdateCIDeploymentTimeout_negativeTimeout() { + ArtifactDefinition heatArtifact = new ArtifactDefinition(); + ArtifactDefinition envArtifact = new ArtifactDefinition(); + ArtifactDefinition origEnvArtifact = new ArtifactDefinition(); + ComponentInstance ci = new ComponentInstance(); + ci.setUniqueId("ciid"); + ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact)); + GroupInstance groupInstance = new GroupInstance(); + groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId()))); + groupInstance.setCustomizationUUID("custUid"); + groupInstance.setUniqueId("guid"); + List<GroupInstance> groupInstances = new ArrayList<>(); + groupInstances.addAll(Arrays.asList(groupInstance)); + ci.setGroupInstances(groupInstances); + Service service = new Service(); + service.setComponentInstances(Collections.singletonList(ci)); + service.setUniqueId("suid"); + envArtifact.setTimeout(-1); + + when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service, + heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact)); + when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId())) + .thenReturn(StorageOperationStatus.OK); + when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class))) + .thenReturn(Either.left(new ArrayList())); + when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid")))) + .thenReturn(StorageOperationStatus.OK); + try { + artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE), + "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true); + } catch (ComponentException exp) { + assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT); + return; + } + fail(); + } + + @Test + public void testUpdateCIDeploymentArtifactTimeout_noUpdate() { + ArtifactDefinition heatArtifact = new ArtifactDefinition(); + ArtifactDefinition envArtifact = new ArtifactDefinition(); + ArtifactDefinition origEnvArtifact = new ArtifactDefinition(); + ComponentInstance ci = new ComponentInstance(); + ci.setUniqueId("ciid"); + ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact)); + envArtifact.setTimeout(heatArtifact.getTimeout()); + GroupInstance groupInstance = new GroupInstance(); + groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId()))); + groupInstance.setCustomizationUUID("custUid"); + groupInstance.setUniqueId("guid"); + List<GroupInstance> groupInstances = new ArrayList<>(); + groupInstances.addAll(Arrays.asList(groupInstance)); + ci.setGroupInstances(groupInstances); + Service service = new Service(); + service.setComponentInstances(Collections.singletonList(ci)); + service.setUniqueId("suid"); + + when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId())) + .thenReturn(StorageOperationStatus.OK); + when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class))) + .thenReturn(Either.left(new ArrayList())); + artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE), + "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true); + assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(origEnvArtifact.getTimeout()); + } + + @Test + public void testUpdateCIDeploymentArtifactTimeout_nonExistingArtifact() { + ArtifactDefinition heatArtifact = new ArtifactDefinition(); + ArtifactDefinition envArtifact = new ArtifactDefinition(); + ArtifactDefinition origEnvArtifact = new ArtifactDefinition(); + envArtifact.setTimeout(heatArtifact.getTimeout()); + envArtifact.setArtifactType("HEAT_ENV"); + envArtifact.setGeneratedFromId("uid1"); + ComponentInstance ci = new ComponentInstance(); + ci.setUniqueId("ciid"); + ci.setDeploymentArtifacts(new HashMap<>()); + Service service = new Service(); + service.setComponentInstances(Collections.singletonList(ci)); + service.setUniqueId("suid"); + + when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId())) + .thenReturn(StorageOperationStatus.OK); + when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class))) + .thenReturn(Either.left(new ArrayList())); + + assertThatThrownBy(() -> { + artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE), + "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true); + }).isInstanceOf(ComponentException.class); + } + + @Test + public void testUpdateCIDeploymentArtifactTimeout_invalidArtifactType() { + ArtifactDefinition envArtifact = new ArtifactDefinition(); + envArtifact.setArtifactType("invalid"); + + try { + artifactBL.handleUpdate("uid", ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE), + "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, null, true); + fail(); + } catch(ComponentException exp) { + assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_TYPE_NOT_SUPPORTED); + assertThat(exp.getParams()[0]).isEqualTo("invalid"); + } + } + + private Map<String, ArtifactDefinition> fillDeploymentArtifacts(ArtifactDefinition heatArtifact, ArtifactDefinition envArtifact, ArtifactDefinition origEnvArtifact) { + heatArtifact.setArtifactType("HEAT"); + heatArtifact.setTimeout(60); + heatArtifact.setEsId("es"); + heatArtifact.setArtifactUUID("uuid1"); + heatArtifact.setUniqueId("uid1"); + envArtifact.setArtifactUUID("uuid2"); + envArtifact.setArtifactType("HEAT_ENV"); + envArtifact.setTimeout(30); + envArtifact.setGenerated(true); + envArtifact.setGeneratedFromId("uid1"); + envArtifact.setUniqueId("uid2"); + origEnvArtifact.setUniqueId("uid2"); + origEnvArtifact.setGeneratedFromId("uid1"); + origEnvArtifact.setArtifactType("HEAT_ENV"); + origEnvArtifact.setTimeout(60); + origEnvArtifact.setGenerated(true); + Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>(); + deploymentArtifacts.put(heatArtifact.getArtifactType(), heatArtifact); + //deploymentArtifacts.put(envArtifact.getArtifactType(), envArtifact); + deploymentArtifacts.put(envArtifact.getArtifactType(), origEnvArtifact); + return deploymentArtifacts; + } + + @Test public void testInvalidStringGroupType() { ArtifactDefinition ad = new ArtifactDefinition(); ad.setArtifactName("artifact1"); @@ -329,13 +530,26 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ JsonElement jsonArtifact = gson.toJsonTree(ad); jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www"); + jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label"); + jsonArtifact.getAsJsonObject().addProperty("timeout", " 80"); + jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT"); ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), - ArtifactDefinition.class); + ArtifactDefinition.class, false); assertNull(afterConvert); } @Test + public void testUpdateArtifactWithEmptyBody() { + try { + RepresentationUtils.convertJsonToArtifactDefinition("", ArtifactDefinition.class, true); + fail(); + } catch (ComponentException exp) { + assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_BODY); + } + } + + @Test public void testInvalidNumberGroupType() { ArtifactDefinition ad = new ArtifactDefinition(); ad.setArtifactName("artifact1"); @@ -345,13 +559,74 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ JsonElement jsonArtifact = gson.toJsonTree(ad); jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123); + jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label"); + jsonArtifact.getAsJsonObject().addProperty("timeout", " 80"); + jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT"); ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), - ArtifactDefinition.class); + ArtifactDefinition.class, false); assertNull(afterConvert); } @Test + public void testMissingArtifactTypeValue() { + ArtifactDefinition ad = new ArtifactDefinition(); + + JsonElement jsonArtifact = gson.toJsonTree(ad); + jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString()); + jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label"); + jsonArtifact.getAsJsonObject().addProperty("timeout", " 80"); + jsonArtifact.getAsJsonObject().add("artifactType", null); + try { + RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), + ArtifactDefinition.class, true); + fail(); + } catch (ComponentException exp) { + assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MANDATORY_PROPERTY_MISSING_VALUE); + assertThat(exp.getParams()[0]).isEqualTo("artifactType"); + } + } + + @Test + public void testMissingArtifactLabel() { + ArtifactDefinition ad = new ArtifactDefinition(); + + JsonElement jsonArtifact = gson.toJsonTree(ad); + jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString()); + jsonArtifact.getAsJsonObject().addProperty("timeout", " 80"); + jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT"); + + try { + RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), + ArtifactDefinition.class, false); + fail(); + } catch (ComponentException exp) { + assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY); + assertThat(exp.getParams()[0]).isEqualTo("artifactLabel"); + } + } + + @Test + public void testMissingArtifactTimeout() { + ArtifactDefinition ad = new ArtifactDefinition(); + + JsonElement jsonArtifact = gson.toJsonTree(ad); + jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString()); + jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label"); + jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT"); + + try { + RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), + ArtifactDefinition.class, true); + fail(); + } catch (ComponentException exp) { + assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY); + assertThat(exp.getParams()[0]).isEqualTo("timeout"); + } + } + + + @Test public void testInvalidGroupTypeWithSpace() { ArtifactDefinition ad = new ArtifactDefinition(); ad.setArtifactName("artifact1"); @@ -361,9 +636,12 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ JsonElement jsonArtifact = gson.toJsonTree(ad); jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT"); + jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label"); + jsonArtifact.getAsJsonObject().addProperty("timeout", " 80"); + jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT"); ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), - ArtifactDefinition.class); + ArtifactDefinition.class, false); assertNull(afterConvert); } @@ -377,9 +655,12 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ JsonElement jsonArtifact = gson.toJsonTree(ad); jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15"); + jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label"); + jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT"); + jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT"); ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), - ArtifactDefinition.class); + ArtifactDefinition.class, true); assertNull(afterConvert); } @@ -420,20 +701,19 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ toscaArtifacts.put(artifactLabel, toscaTemplateArtifact); service.setToscaArtifacts(toscaArtifacts); - ESArtifactData esArtifactData = new ESArtifactData(esArtifactId); - esArtifactData.setDataAsArray(payload); - Either<ESArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(esArtifactData); + DAOArtifactData DAOArtifactData = new DAOArtifactData(esArtifactId); + DAOArtifactData.setDataAsArray(payload); + Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData); when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres); List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>(); serviceList.add(service); Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either .left(serviceList); when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes); - Either<byte[], ResponseFormat> downloadServiceArtifactByNamesRes = artifactBL + byte[] downloadServiceArtifactByNamesRes = artifactBL .downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName); - assertTrue(downloadServiceArtifactByNamesRes.isLeft()); - assertTrue(downloadServiceArtifactByNamesRes.left().value() != null - && downloadServiceArtifactByNamesRes.left().value().length == payload.length); + assertTrue(downloadServiceArtifactByNamesRes != null + && downloadServiceArtifactByNamesRes.length == payload.length); } @Test @@ -444,15 +724,14 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ Resource component = new Resource(); component.setComponentType(ComponentTypeEnum.RESOURCE); - when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER)); + when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER); when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), - eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId"))) + eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId"))) .thenReturn(Either.left(new ArtifactDefinition())); - Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder( - heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, + ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder( + new ArrayList<>(), heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap()); - assertTrue(heatEnvPlaceHolder.isLeft()); - assertNull(heatEnvPlaceHolder.left().value().getListHeatParameters()); + assertNull(heatEnvPlaceHolder.getListHeatParameters()); } @Test @@ -466,17 +745,16 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ Resource component = new Resource(); - when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER)); + when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER); when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), - eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId"))) + eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId"))) .thenReturn(Either.left(new ArtifactDefinition())); - Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder( - heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, + ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder( + new ArrayList<>(), heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap()); - assertTrue(heatEnvPlaceHolder.isLeft()); - ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder.left().value(); + ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder; List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters(); assertEquals(listHeatParameters.size(), 3); verifyHeatParam(listHeatParameters.get(0), heatParam1); @@ -496,7 +774,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK); when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), - any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition)); + any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition)); when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK); when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat()); artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), @@ -515,7 +793,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK); when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), - any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition)); + any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition)); when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK); when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat()); artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), @@ -534,7 +812,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK); when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), - any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition)); + any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition)); when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK); when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat()); artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), @@ -548,6 +826,9 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ assertNull(heatEnvParam.getCurrentValue()); } + ////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////new tests/////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////// private ArtifactsBusinessLogic createTestSubject() { return getTestSubject(); } @@ -577,6 +858,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ new Object[]{component, artifactId}); } + @Test public void testCheckCreateFields() throws Exception { ArtifactsBusinessLogic testSubject; @@ -655,6 +937,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ artifactId, component, artifacts); } + @Test public void testValidateArtifact() throws Exception { ArtifactsBusinessLogic testSubject; @@ -667,14 +950,12 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY; Component component = createResourceObject(true); - Wrapper<ResponseFormat> errorWrapper = new Wrapper<>(); boolean shouldLock = false; boolean inTransaction = false; - ArtifactDefinition result; // default test testSubject = createTestSubject(); - result = Deencapsulation.invoke(testSubject, "validateArtifact", new Object[]{componentId, componentType, operation, artifactId, artifactInfo, auditingAction, user, component, component, errorWrapper, shouldLock, inTransaction}); + testSubject.validateArtifact(componentId, componentType, operation, artifactId, artifactInfo, auditingAction, user, component, shouldLock, inTransaction); } @Test @@ -685,15 +966,13 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ Component component = createResourceObject(true); ArtifactDefinition artifactInfo = buildArtifactPayload(); - Either<ArtifactDefinition, ResponseFormat> validateArtifact = Either.left(artifactInfo); - Wrapper<ResponseFormat> errorWrapper = new Wrapper<>(); boolean shouldLock = false; boolean inTransaction = false; // default test testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "handleHeatEnvDownload", componentId, componentType, user, component, validateArtifact, errorWrapper, shouldLock, inTransaction); + testSubject.handleHeatEnvDownload(componentId, componentType, user, component, artifactInfo, shouldLock, inTransaction); } @Test @@ -716,12 +995,10 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ ArtifactDefinition artAfterUpdate = null; Component component = createResourceObject(true); ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE; - ActionStatus result; // default test testSubject = createTestSubject(); - result = Deencapsulation.invoke(testSubject, "updateGroupForHeat", new Object[]{artifactInfo, - artifactInfo, component, componentType}); + testSubject.updateGroupForHeat(artifactInfo, artifactInfo, component); } @Test @@ -730,15 +1007,14 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ ArtifactDefinition artifactInfo = buildArtifactPayload(); Component component = createResourceObject(true); ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE; - ActionStatus result; // default test testSubject = createTestSubject(); - result = Deencapsulation.invoke(testSubject, "updateGroupForHeat", - new Object[]{artifactInfo, artifactInfo, artifactInfo, - artifactInfo, component, componentType}); + testSubject.updateGroupForHeat(artifactInfo, artifactInfo, artifactInfo, + artifactInfo, component); } + @Test public void testHandleAuditing() throws Exception { ArtifactsBusinessLogic testSubject; @@ -791,6 +1067,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ componentType, parentId, operation, artifactId}); } + @Test public void testValidateInformationalArtifact() throws Exception { ArtifactsBusinessLogic testSubject; @@ -832,6 +1109,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ result = Deencapsulation.invoke(testSubject, "getUpdatedGroupInstances", new Object[]{artifactId, artifactInfo, groups}); } + @Test public void testFindArtifact_1() throws Exception { ArtifactsBusinessLogic testSubject; @@ -858,7 +1136,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "fetchArtifactsFromInstance", artifactId, artifacts, instance); + Deencapsulation.invoke(testSubject, "fetchArtifactsFromInstance", new Object[]{artifactId, artifacts, instance}); } @@ -891,18 +1169,15 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ } - @Test - public void testValidateDeploymentArtifactConf() throws Exception { + @Test(expected= ComponentException.class) + public void testDeploymentArtifactTypeIsLegalForParent_shouldThrowException() throws Exception { ArtifactsBusinessLogic testSubject; ArtifactDefinition artifactInfo = buildArtifactPayload(); - Wrapper<ResponseFormat> responseWrapper = new Wrapper<>(); ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL; Map<String, ArtifactTypeConfig> resourceDeploymentArtifacts = new HashMap<>(); - - // test 1 testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "validateDeploymentArtifactConf", artifactInfo, responseWrapper, artifactType, resourceDeploymentArtifacts); + testSubject.validateDeploymentArtifactTypeIsLegalForParent(artifactInfo, artifactType, resourceDeploymentArtifacts); } @@ -927,7 +1202,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - testSubject.validateArtifactTypeExists(responseWrapper, artifactInfo); + testSubject.getValidArtifactType(artifactInfo); } @@ -945,19 +1220,16 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ } - @Test - public void testValidateHeatEnvDeploymentArtifact() throws Exception { + @Test(expected= ComponentException.class) + public void testValidateHeatEnvDeploymentArtifact_shouldThrowException() throws Exception { ArtifactsBusinessLogic testSubject; Component component = createResourceObject(true); String parentId = ""; ArtifactDefinition artifactInfo = buildArtifactPayload(); NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters; - Either<Boolean, ResponseFormat> result; - // default test testSubject = createTestSubject(); - result = Deencapsulation.invoke(testSubject, "validateHeatEnvDeploymentArtifact", - new Object[]{component, parentId, artifactInfo, parentType}); + testSubject.validateHeatEnvDeploymentArtifact(component, parentId, artifactInfo, parentType); } @Test @@ -969,20 +1241,10 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - testSubject.fillArtifactPayloadValidation(errorWrapper, payloadWrapper, artifactDefinition); + testSubject.fillArtifactPayload(payloadWrapper, artifactDefinition); } - @Test - public void testValidateValidYaml() throws Exception { - ArtifactsBusinessLogic testSubject; - Wrapper<ResponseFormat> errorWrapper = new Wrapper<>(); - ArtifactDefinition artifactInfo = buildArtifactPayload(); - - // default test - testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "validateValidYaml", errorWrapper, artifactInfo); - } @Test public void testIsValidXml() throws Exception { @@ -996,17 +1258,16 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ } @Test - public void testValidateSingleDeploymentArtifactName() throws Exception { + public void testHeatTimeoutValue() throws Exception { ArtifactsBusinessLogic testSubject; - Wrapper<ResponseFormat> errorWrapper = new Wrapper<>(); - String artifactName = ""; - Component component = createResourceObject(true); - NodeTypeEnum parentType = null; - + boolean isCreate = false; + ArtifactDefinition artifactInfo = buildArtifactPayload(); + ArtifactDefinition currentArtifact = null; + Either<Boolean, ResponseFormat> result; // default test testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "validateSingleDeploymentArtifactName", errorWrapper, artifactName, component, NodeTypeEnum.class); + testSubject.validateHeatTimeoutValue(isCreate, artifactInfo, artifactInfo); } @Test @@ -1019,12 +1280,12 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - result = Deencapsulation.invoke(testSubject, "validateHeatDeploymentArtifact", - new Object[]{isCreate, artifactInfo, artifactInfo}); + testSubject.validateHeatTimeoutValue(isCreate, artifactInfo, artifactInfo); } - @Test - public void testValidateResourceType() throws Exception { + + @Test(expected= ComponentException.class) + public void testValidateResourceType_shouldThrowException() throws Exception { ArtifactsBusinessLogic testSubject; ResourceTypeEnum resourceType = ResourceTypeEnum.VF; ArtifactDefinition artifactInfo = buildArtifactPayload(); @@ -1033,12 +1294,13 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // test 1 testSubject = createTestSubject(); + testSubject.validateResourceType(resourceType, artifactInfo, typeList); result = Deencapsulation.invoke(testSubject, "validateResourceType", new Object[]{resourceType, artifactInfo, typeList}); } @Test - public void testValidateAndConvertHeatParamers() throws Exception { + public void testValidateAndConvertHeatParameters() throws Exception { ArtifactsBusinessLogic testSubject; ArtifactDefinition artifactInfo = buildArtifactPayload(); String artifactType = ""; @@ -1046,8 +1308,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - result = Deencapsulation.invoke(testSubject, "validateAndConvertHeatParamers", - new Object[]{artifactInfo, artifactType}); + testSubject.validateAndConvertHeatParameters(artifactInfo, artifactType); } @Test @@ -1063,6 +1324,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ result = testSubject.getDeploymentArtifacts(component, parentType, ciId); } + @Test public void testValidateFirstUpdateHasPayload() throws Exception { ArtifactsBusinessLogic testSubject; @@ -1084,8 +1346,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - result = Deencapsulation.invoke(testSubject, "validateAndSetArtifactname", - new Object[]{artifactInfo}); + testSubject.validateAndSetArtifactName(artifactInfo); } @Test @@ -1139,7 +1400,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "checkAndSetUnupdatableHeatParams", heatParameters, currentParameters); + Deencapsulation.invoke(testSubject, "checkAndSetUnupdatableHeatParams", new Object[]{heatParameters, currentParameters}); } @Test @@ -1162,16 +1423,20 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ ArtifactsBusinessLogic testSubject = getTestSubject(); Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload", - new Object[]{artifactInfo, isArtifactMetadataUpdate}); + new Object[] { artifactInfo, isArtifactMetadataUpdate }); assertArrayEquals(payload, result.left().value()); } + + + + @Test - public void testGivenInValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() { - final int expectedStatus = 100; - when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_YAML), any(String.class))).thenReturn(new ResponseFormat(expectedStatus)); - final byte[] payload = "invalidYaml".getBytes(); - ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS); + public void testGivenInValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() { + final int expectedStatus = 100; + when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_YAML), any(String.class))).thenReturn(new ResponseFormat(expectedStatus)); + final byte[] payload = "invalidYaml".getBytes(); + ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS); final boolean isArtifactMetadataUpdate = false; ArtifactsBusinessLogic testSubject = getTestSubject(); @@ -1185,11 +1450,11 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ } @Test - public void testGivenEmptyVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsMissingData() { - final int expectedStatus = 101; - when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_DATA), any(String.class))).thenReturn(new ResponseFormat(expectedStatus)); - final byte[] payload = "".getBytes(); - ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS); + public void testGivenEmptyVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsMissingData() { + final int expectedStatus = 101; + when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_DATA), any(String.class))).thenReturn(new ResponseFormat(expectedStatus)); + final byte[] payload = "".getBytes(); + ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS); final boolean isArtifactMetadataUpdate = false; ArtifactsBusinessLogic testSubject = getTestSubject(); @@ -1198,15 +1463,15 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload", new Object[]{artifactInfo, isArtifactMetadataUpdate}); - int status = result.right().value().getStatus(); - assertEquals(expectedStatus, status); + int status = result.right().value().getStatus(); + assertEquals(expectedStatus, status); } @Test - public void testGivenValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() { - final byte[] payload = "heat_template_version: 1.0".getBytes(); - ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT); + public void testGivenValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() { + final byte[] payload = "heat_template_version: 1.0".getBytes(); + ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT); final boolean isArtifactMetadataUpdate = false; ArtifactsBusinessLogic testSubject = getTestSubject(); @@ -1217,11 +1482,11 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ } @Test - public void testGivenInValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() { - final int expectedStatus = 1000; - when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_DEPLOYMENT_ARTIFACT_HEAT), any(String.class))).thenReturn(new ResponseFormat(expectedStatus)); - final byte[] payload = "validYaml: butNoHeatTemplateVersion".getBytes(); - ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT); + public void testGivenInValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() { + final int expectedStatus = 1000; + when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_DEPLOYMENT_ARTIFACT_HEAT), any(String.class))).thenReturn(new ResponseFormat(expectedStatus)); + final byte[] payload = "validYaml: butNoHeatTemplateVersion".getBytes(); + ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT); final boolean isArtifactMetadataUpdate = false; ArtifactsBusinessLogic testSubject = getTestSubject(); @@ -1276,18 +1541,20 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ new Object[]{operation, origMd5}); } + @Test public void testCreateEsArtifactData() throws Exception { ArtifactsBusinessLogic testSubject; ArtifactDataDefinition artifactInfo = buildArtifactPayload(); byte[] artifactPayload = new byte[]{' '}; - ESArtifactData result; + DAOArtifactData result; // default test testSubject = createTestSubject(); result = testSubject.createEsArtifactData(artifactInfo, artifactPayload); } + @Test public void testIsArtifactMetadataUpdate() throws Exception { ArtifactsBusinessLogic testSubject; @@ -1332,7 +1599,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ ArtifactsBusinessLogic testSubject; ArtifactDefinition artifactDefinition = buildArtifactPayload(); String payloadStr = ""; - Either<ESArtifactData, ResponseFormat> result; + Either<DAOArtifactData, ResponseFormat> result; // default test testSubject = createTestSubject(); @@ -1352,11 +1619,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // test 1 testSubject = createTestSubject(); - prevUUID = ""; - result = Deencapsulation.invoke(testSubject, "updateArtifactOnGroupInstance", - new Object[]{componentType, component, instanceId, prevUUID, artifactInfo, - artifactInfo}); - + testSubject.updateArtifactOnGroupInstance(component, instanceId, prevUUID, artifactInfo, artifactInfo); } @Test @@ -1371,6 +1634,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ new Object[]{artifactDefinition}); } + @Test public void testBuildJsonForUpdateArtifact() throws Exception { ArtifactsBusinessLogic testSubject; @@ -1406,6 +1670,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ label, displayName, description, artifactContent, updatedRequiredArtifacts, heatParameters); } + @Test public void testReplaceCurrHeatValueWithUpdatedValue() throws Exception { ArtifactsBusinessLogic testSubject; @@ -1415,9 +1680,10 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue", currentHeatEnvParams, updatedHeatEnvParams); + Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue", new Object[]{currentHeatEnvParams, updatedHeatEnvParams}); } + @Test public void testExtractArtifactDefinition() throws Exception { ArtifactsBusinessLogic testSubject; @@ -1430,6 +1696,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ result = testSubject.extractArtifactDefinition(eitherArtifact); } + @Test public void testSetHeatCurrentValuesOnHeatEnvDefaultValues() throws Exception { ArtifactsBusinessLogic testSubject; @@ -1452,7 +1719,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ // default test testSubject = createTestSubject(); - Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", artifactInfo, artifactInfo, placeHolderData); + Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", new Object[]{artifactInfo, artifactInfo, placeHolderData}); } @Test @@ -1478,11 +1745,11 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE); boolean shouldLock = false; boolean inTransaction = false; - Either<List<ArtifactDefinition>, ResponseFormat> result; + List<ArtifactDefinition> result; // default test testSubject = createTestSubject(); - result = testSubject.handleArtifactsRequestForInnerVfcComponent(artifactsToHandle, component, user, + result = testSubject.handleArtifactsForInnerVfcComponent(artifactsToHandle, component, user, vfcsNewCreatedArtifacts, operation, shouldLock, inTransaction); } @@ -1553,7 +1820,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ user.setRole(Role.ADMIN.name()); - when(userValidations.validateUserExists(Mockito.eq("userId"), any(), anyBoolean())) + when(userValidations.validateUserExists(Mockito.eq("userId"))) .thenReturn(user); when(toscaOperationFacade.getToscaFullElement(any())) .thenReturn(Either.left(resource)); @@ -1563,23 +1830,23 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ .thenReturn(artifactDefinition); when(graphLockOperation.lockComponent(eq(resource.getUniqueId()), any(NodeTypeEnum.class))) .thenReturn(StorageOperationStatus.OK); - when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), anyString(), any(NodeTypeEnum.class), any())) + when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), anyString(), any(NodeTypeEnum.class), any(), anyBoolean())) .thenReturn(Either.left(artifactDefinition)); - when(artifactCassandraDao.saveArtifact(any(ESArtifactData.class))) + when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class))) .thenReturn(CassandraOperationStatus.OK); when(toscaOperationFacade.getToscaElement(anyString())) .thenReturn(Either.left(resource)); when(interfaceOperation.updateInterfaces(anyString(), anyList())) .thenReturn(Either.left(interfaceDefinitionsList)); + when(artifactToscaOperation.getAllInstanceArtifacts(resource.getUniqueId(), componentId)).thenReturn(Either.left(artifactDefinitionMap)); + when(toscaOperationFacade.generateCustomizationUUIDOnInstance(any(), any())).thenReturn(StorageOperationStatus.OK); - Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result = artifactBL.handleArtifactRequest(componentId, user.getUserId(), ComponentTypeEnum.RESOURCE_INSTANCE + Either<ArtifactDefinition, Operation> result = artifactBL.handleArtifactRequest(componentId, user.getUserId(), ComponentTypeEnum.RESOURCE_INSTANCE , operationInfo, artifactDefinition.getUniqueId(), artifactDefinition, requestMd5, "data", "iuuid", - "ouuid", componentId, "resources"); + null, componentId, "resources"); - Assert.assertTrue(result.isLeft()); - Either<ArtifactDefinition, Operation> leftResult = result.left().value(); - assertTrue(leftResult.isLeft()); - ArtifactDefinition leftValue = leftResult.left().value(); + assertTrue(result.isLeft()); + ArtifactDefinition leftValue = result.left().value(); assertEquals(artifactDefinition.getArtifactName(), leftValue.getArtifactName()); } @@ -1603,19 +1870,17 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean())) .thenReturn(Either.left(csar)); - when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), anyString(), anyString(), any(NodeTypeEnum.class), anyString())) + when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(Component.class), anyString(), any(NodeTypeEnum.class), anyString(), anyBoolean())) .thenReturn(Either.left(artifactDefinition)); - when(artifactCassandraDao.saveArtifact(any(ESArtifactData.class))) + when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class))) .thenReturn(CassandraOperationStatus.OK); - Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result + Either<ArtifactDefinition, Operation> result = artifactBL.generateAndSaveToscaArtifact(artifactDefinition, resource, user, inCertificationRequest, shouldLock, inTransaction, fetchTemplatesFromDB); - Assert.assertTrue(result.isLeft()); - Either<ArtifactDefinition, Operation> leftResult = result.left().value(); - Assert.assertEquals(artifactDefinition.getUniqueId(), leftResult.left().value().getUniqueId()); + Assert.assertEquals(artifactDefinition.getUniqueId(), result.left().value().getUniqueId()); } @Test @@ -1634,11 +1899,10 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean())) .thenReturn(Either.left(generatedCsar)); - Either<ImmutablePair<String, byte[]>, ResponseFormat> result = + ImmutablePair<String, byte[]> result = testSubject.handleDownloadToscaModelRequest(resource, csarArtifact); - ImmutablePair<String, byte[]> leftResult = result.left().value(); - assertEquals(csarArtifact.getArtifactName(), leftResult.getKey()); + assertEquals(csarArtifact.getArtifactName(), result.getKey()); } @Test @@ -1647,7 +1911,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ String artifactId = "artifactId"; String parentId = "parentId"; - ESArtifactData esArtifactData = new ESArtifactData(); + DAOArtifactData daoArtifactData = new DAOArtifactData(); ArtifactDefinition artifactDefinition = new ArtifactDefinition(); InterfaceDefinition interfaceDefinition = new InterfaceDefinition(); Operation operation = new Operation(); @@ -1659,7 +1923,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ artifactDefinition.setUniqueId(artifactId); artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA); - esArtifactData.setDataAsArray("data".getBytes()); + daoArtifactData.setDataAsArray("data".getBytes()); Resource resource = new Resource(); resource.setUniqueId("resourceId"); @@ -1676,20 +1940,20 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ User user = new User(); user.setUserId("userId"); - when(userValidations.validateUserExists(eq(user.getUserId()), any(), anyBoolean())) + when(userValidations.validateUserExists(eq(user.getUserId()))) .thenReturn(user); when(toscaOperationFacade.getToscaFullElement(eq(componentId))) .thenReturn(Either.left(resource)); when(artifactToscaOperation.getArtifactById(anyString(), anyString(), any(ComponentTypeEnum.class), anyString())) .thenReturn(Either.left(artifactDefinition)); when(artifactCassandraDao.getArtifact(any())) - .thenReturn(Either.left(esArtifactData)); + .thenReturn(Either.left(daoArtifactData)); + when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK); - Either<ImmutablePair<String, byte[]>, ResponseFormat> result = + ImmutablePair<String, byte[]> result = artifactBL.handleDownloadRequestById(componentId, artifactId, user.getUserId(), ComponentTypeEnum.RESOURCE, parentId, null); - ImmutablePair<String, byte[]> leftResult = result.left().value(); - Assert.assertEquals(artifactDefinition.getArtifactName(), leftResult.getKey()); + Assert.assertEquals(artifactDefinition.getArtifactName(), result.getKey()); } @Test @@ -1698,10 +1962,15 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ String userId = null; String artifactId = "artifactId"; - Either<ImmutablePair<String, byte[]>, ResponseFormat> result = - artifactBL.handleDownloadRequestById(componentId, artifactId, userId, ComponentTypeEnum.RESOURCE, componentId - , null); - Assert.assertTrue(result.isRight()); + try { + ImmutablePair<String, byte[]> result = + artifactBL.handleDownloadRequestById(componentId, artifactId, userId, ComponentTypeEnum.RESOURCE, componentId + , null); + } catch (ComponentException e) { + assertEquals(e.getActionStatus(), ActionStatus.MISSING_INFORMATION); + return; + } + fail(); } @Test @@ -1727,11 +1996,10 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(artifactToscaOperation.getArtifacts(any(), any(NodeTypeEnum.class), any(ArtifactGroupTypeEnum.class), any())) .thenReturn(Either.left(artifactDefinitionMap)); - Either<Map<String, ArtifactDefinition>, ResponseFormat> result = + Map<String, ArtifactDefinition> result = artifactBL.handleGetArtifactsByType(ComponentTypeEnum.SERVICE.name(), parentId, ComponentTypeEnum.SERVICE, componentId, artifactGroupType, userId); - Map<String, ArtifactDefinition> leftResult = result.left().value(); - Assert.assertEquals(artifactDefinition.getArtifactName(), leftResult.get("artifact1").getArtifactName()); + Assert.assertEquals(artifactDefinition.getArtifactName(), result.get("artifact1").getArtifactName()); } @Test @@ -1809,13 +2077,15 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ String resourceName = "resource"; String resourceVersion = "1.0"; String artifactName = "artifactName"; - ResponseFormat responseFormat = new ResponseFormat(); - responseFormat.setStatus(007); - when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_CONTENT))) - .thenReturn(responseFormat); - Either<byte[], ResponseFormat> result = artifactBL.downloadRsrcArtifactByNames(serviceName, serviceVersion, resourceName, resourceVersion, artifactName); - assertEquals(responseFormat.getStatus(), result.right().value().getStatus()); + try{ + artifactBL.downloadRsrcArtifactByNames(serviceName, serviceVersion, resourceName, resourceVersion, artifactName); + } catch(ComponentException e) { + assertEquals(ActionStatus.INVALID_CONTENT, e.getActionStatus()); + return; + } + fail(); + } @Test @@ -1837,7 +2107,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ ArtifactDefinition artifactDefinition = new ArtifactDefinition(); artifactDefinition.setEsId("esId"); - ESArtifactData esArtifactData = new ESArtifactData(); + DAOArtifactData esArtifactData = new DAOArtifactData(); esArtifactData.setDataAsArray("test".getBytes()); artifactDefinition.setArtifactName(artifactName); @@ -1854,9 +2124,8 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{ when(artifactCassandraDao.getArtifact(any())) .thenReturn(Either.left(esArtifactData)); - Either<byte[], ResponseFormat> result = artifactBL.downloadRsrcArtifactByNames(serviceName, version, resourceName, version, artifactName); - byte[] data = result.left().value(); - Assert.assertEquals(esArtifactData.getDataAsArray(), data); + byte[] result = artifactBL.downloadRsrcArtifactByNames(serviceName, version, resourceName, version, artifactName); + Assert.assertEquals(esArtifactData.getDataAsArray(), result); } private ArtifactsBusinessLogic getTestSubject() { |