summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java45
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogicTest.java142
2 files changed, 140 insertions, 47 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java
index f4ccb868d9..552fbb0b16 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java
@@ -845,7 +845,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
if (createServiceResponse.isRight()) {
return createServiceResponse;
}
- return createServiceByDao(service, AuditingActionEnum.CREATE_RESOURCE, user)
+ return createServiceByDao(service, user)
.left()
.bind(c -> updateCatalog(c, ChangeTypeEnum.LIFECYCLE)
.left()
@@ -859,42 +859,42 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
}
}
- private Either<Service, ResponseFormat> createServiceByDao(Service service, AuditingActionEnum actionEnum, User user) {
+ private Either<Service, ResponseFormat> createServiceByDao(final Service service, final User user) {
log.debug("send service {} to dao for create", service.getComponentMetadataDefinition().getMetadataDataDefinition().getName());
Either<Boolean, ResponseFormat> lockResult = lockComponentByName(service.getSystemName(), service, "Create Service");
if (lockResult.isRight()) {
ResponseFormat responseFormat = lockResult.right().value();
- componentsUtils.auditComponentAdmin(responseFormat, user, service, actionEnum, ComponentTypeEnum.SERVICE);
+ componentsUtils.auditComponentAdmin(responseFormat, user, service, AuditingActionEnum.CREATE_RESOURCE,
+ ComponentTypeEnum.SERVICE);
return Either.right(responseFormat);
}
log.debug("System name locked is {}, status = {}", service.getSystemName(), lockResult);
try {
-
createMandatoryArtifactsData(service, user);
createServiceApiArtifactsData(service, user);
setToscaArtifactsPlaceHolders(service, user);
- generateAndAddInputsFromGenericTypeProperties(service, fetchAndSetDerivedFromGenericType(service));
+ final Resource genericType = fetchAndSetDerivedFromGenericType(service);
+ generatePropertiesFromGenericType(service, genericType);
+ generateAndAddInputsFromGenericTypeProperties(service, genericType);
beforeCreate(service);
Either<Service, StorageOperationStatus> dataModelResponse = toscaOperationFacade.createToscaComponent(service);
-
- // service created successfully!!!
if (dataModelResponse.isLeft()) {
- log.debug("Service created successfully!!!");
+ log.debug("Service '{}' created successfully", service.getName());
ResponseFormat responseFormat = componentsUtils.getResponseFormat(ActionStatus.CREATED);
- componentsUtils.auditComponentAdmin(responseFormat, user, service, actionEnum, ComponentTypeEnum.SERVICE);
+ componentsUtils.auditComponentAdmin(responseFormat, user, service, AuditingActionEnum.CREATE_RESOURCE,
+ ComponentTypeEnum.SERVICE);
ASDCKpiApi.countCreatedServicesKPI();
return Either.left(dataModelResponse.left().value());
}
-
ResponseFormat responseFormat = componentsUtils.getResponseFormatByComponent(componentsUtils.convertFromStorageResponse(dataModelResponse.right().value()), service, ComponentTypeEnum.SERVICE);
log.debug(AUDIT_BEFORE_SENDING_RESPONSE);
- componentsUtils.auditComponentAdmin(responseFormat, user, service, actionEnum, ComponentTypeEnum.SERVICE);
+ componentsUtils.auditComponentAdmin(responseFormat, user, service, AuditingActionEnum.CREATE_RESOURCE,
+ ComponentTypeEnum.SERVICE);
return Either.right(responseFormat);
-
} finally {
graphLockOperation.unlockComponentByName(service.getSystemName(), service.getUniqueId(), NodeTypeEnum.Service);
}
@@ -916,6 +916,27 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
});
}
+ private void generatePropertiesFromGenericType(final Service service, final Resource genericType) {
+ if (CollectionUtils.isEmpty(genericType.getProperties())) {
+ return;
+ }
+ final List<PropertyDefinition> genericTypePropertyList = genericType.getProperties().stream()
+ .map(PropertyDefinition::new)
+ .peek(propertyDefinition -> propertyDefinition.setUniqueId(null))
+ .collect(Collectors.toList());
+ if (service.getProperties() == null) {
+ service.setProperties(new ArrayList<>(genericTypePropertyList));
+ } else {
+ List<PropertyDefinition> servicePropertyList = service.getProperties();
+ genericTypePropertyList.stream()
+ .filter(property -> servicePropertyList.stream()
+ .noneMatch(property1 -> property1.getName().equals(property.getName())))
+ .forEach(servicePropertyList::add);
+ }
+
+ service.getProperties().forEach(propertyDefinition -> propertyDefinition.setUniqueId(null));
+ }
+
@SuppressWarnings("unchecked")
private void createServiceApiArtifactsData(Service service, User user) {
// create mandatory artifacts
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogicTest.java
index 7fc92fb362..42d24bbcd1 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogicTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogicTest.java
@@ -21,6 +21,9 @@
package org.openecomp.sdc.be.components.impl;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -38,8 +41,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.junit.Assert;
import org.junit.Test;
@@ -56,6 +57,7 @@ import org.openecomp.sdc.be.model.ComponentInstance;
import org.openecomp.sdc.be.model.ComponentInstanceInterface;
import org.openecomp.sdc.be.model.GroupInstance;
import org.openecomp.sdc.be.model.Operation;
+import org.openecomp.sdc.be.model.PropertyDefinition;
import org.openecomp.sdc.be.model.Resource;
import org.openecomp.sdc.be.model.Service;
import org.openecomp.sdc.be.model.category.CategoryDefinition;
@@ -93,7 +95,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
@Test
public void testHappyScenario() {
Service service = createServiceObject(false);
- validateUserRoles(Role.ADMIN, Role.DESIGNER);
when(genericTypeBusinessLogic.fetchDerivedFromGenericType(service)).thenReturn(Either.left(genericService));
Either<Service, ResponseFormat> createResponse = bl.createService(service, user);
@@ -135,11 +136,58 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
assertTrue(createResponse.isLeft());
}
+
+ @Test
+ public void testCreateServiceWhenGenericTypeHasProperties() {
+ final Service service = createServiceObject(false);
+
+ final Resource genericTypeResource = mockGenericTypeResource();
+
+ when(genericTypeBusinessLogic.fetchDerivedFromGenericType(service)).thenReturn(Either.left(genericTypeResource));
+ final Service expectedService = createServiceObject(true);
+ expectedService.setProperties(mockPropertyList());
+ when(toscaOperationFacade.createToscaComponent(service)).thenReturn(Either.left(expectedService));
+ Either<Service, ResponseFormat> createResponse = bl.createService(service, user);
+
+ org.hamcrest.MatcherAssert.assertThat("Service creation should be successful",
+ createResponse.isLeft(), is(true));
+ final Service actualService = createResponse.left().value();
+ org.hamcrest.MatcherAssert.assertThat("Service should not be null", service, is(notNullValue()));
+
+ assertEqualsServiceObject(expectedService, actualService);
+ }
+
+ @Test
+ public void testCreateServiceWhenGenericTypeAndServiceHasProperties() {
+ final Service service = createServiceObject(false);
+ service.setProperties(mockPropertyList());
+ service.getProperties().remove(0);
+ final PropertyDefinition serviceProperty = new PropertyDefinition();
+ serviceProperty.setName("aServiceProperty");
+ service.getProperties().add(serviceProperty);
+
+ final Resource genericTypeResource = mockGenericTypeResource();
+
+ when(genericTypeBusinessLogic.fetchDerivedFromGenericType(service)).thenReturn(Either.left(genericTypeResource));
+ final Service expectedService = createServiceObject(true);
+ expectedService.setProperties(mockPropertyList());
+ expectedService.getProperties().add(serviceProperty);
+ when(toscaOperationFacade.createToscaComponent(service)).thenReturn(Either.left(expectedService));
+ Either<Service, ResponseFormat> createResponse = bl.createService(service, user);
+
+ org.hamcrest.MatcherAssert.assertThat("Service creation should be successful",
+ createResponse.isLeft(), is(true));
+ final Service actualService = createResponse.left().value();
+ org.hamcrest.MatcherAssert.assertThat("Service should not be null", service, is(notNullValue()));
+
+
+ assertEqualsServiceObject(expectedService, actualService);
+ }
+
@Test
public void testHappyScenarioCRNullProjectCode() {
Service service = createServiceObject(false);
service.setProjectCode(null);
- validateUserRoles(Role.ADMIN, Role.DESIGNER);
when(genericTypeBusinessLogic.fetchDerivedFromGenericType(service)).thenReturn(Either.left(genericService));
Either<Service, ResponseFormat> createResponse = bl.createService(service, user);
@@ -148,12 +196,12 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
}
assertEqualsServiceObject(createServiceObject(true), createResponse.left().value());
}
+
@Test
public void testHappyScenarioCREmptyStringProjectCode() {
createServiceValidator();
Service service = createServiceObject(false);
service.setProjectCode("");
- validateUserRoles(Role.ADMIN, Role.DESIGNER);
when(genericTypeBusinessLogic.fetchDerivedFromGenericType(service)).thenReturn(Either.left(genericService));
Either<Service, ResponseFormat> createResponse = bl.createService(service, user);
@@ -162,36 +210,37 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
}
assertEqualsServiceObject(createServiceObject(true), createResponse.left().value());
}
-
- private void validateUserRoles(Role ... roles) {
- List<Role> listOfRoles = Stream.of(roles).collect(Collectors.toList());
+ private void assertEqualsServiceObject(final Service expectedService, final Service actualService) {
+ assertEquals(expectedService.getContactId(), actualService.getContactId());
+ assertEquals(expectedService.getCategories(), actualService.getCategories());
+ assertEquals(expectedService.getCreatorUserId(), actualService.getCreatorUserId());
+ assertEquals(expectedService.getCreatorFullName(), actualService.getCreatorFullName());
+ assertEquals(expectedService.getDescription(), actualService.getDescription());
+ assertEquals(expectedService.getIcon(), actualService.getIcon());
+ assertEquals(expectedService.getLastUpdaterUserId(), actualService.getLastUpdaterUserId());
+ assertEquals(expectedService.getLastUpdaterFullName(), actualService.getLastUpdaterFullName());
+ assertEquals(expectedService.getName(), actualService.getName());
+ assertEquals(expectedService.getUniqueId(), actualService.getUniqueId());
+ assertEquals(expectedService.getVersion(), actualService.getVersion());
+ assertEquals(expectedService.getArtifacts(), actualService.getArtifacts());
+ assertEquals(expectedService.getCreationDate(), actualService.getCreationDate());
+ assertEquals(expectedService.getLastUpdateDate(), actualService.getLastUpdateDate());
+ assertEquals(expectedService.getLifecycleState(), actualService.getLifecycleState());
+ assertEquals(expectedService.getTags(), actualService.getTags());
+ if (expectedService.getProperties() == null) {
+ org.hamcrest.MatcherAssert.assertThat("Service properties should be null",
+ actualService.getProperties(), is(nullValue()));
+ return;
+ }
+ org.hamcrest.MatcherAssert.assertThat("Service properties should be as expected",
+ actualService.getProperties(), is(expectedService.getProperties()));
}
- private void assertEqualsServiceObject(Service origService, Service newService) {
- assertEquals(origService.getContactId(), newService.getContactId());
- assertEquals(origService.getCategories(), newService.getCategories());
- assertEquals(origService.getCreatorUserId(), newService.getCreatorUserId());
- assertEquals(origService.getCreatorFullName(), newService.getCreatorFullName());
- assertEquals(origService.getDescription(), newService.getDescription());
- assertEquals(origService.getIcon(), newService.getIcon());
- assertEquals(origService.getLastUpdaterUserId(), newService.getLastUpdaterUserId());
- assertEquals(origService.getLastUpdaterFullName(), newService.getLastUpdaterFullName());
- assertEquals(origService.getName(), newService.getName());
- assertEquals(origService.getName(), newService.getName());
- assertEquals(origService.getUniqueId(), newService.getUniqueId());
- assertEquals(origService.getVersion(), newService.getVersion());
- assertEquals(origService.getArtifacts(), newService.getArtifacts());
- assertEquals(origService.getCreationDate(), newService.getCreationDate());
- assertEquals(origService.getLastUpdateDate(), newService.getLastUpdateDate());
- assertEquals(origService.getLifecycleState(), newService.getLifecycleState());
- assertEquals(origService.getTags(), newService.getTags());
- }
/* CREATE validations - start ***********************/
// Service name - start
-
@Test
public void testFailedServiceValidations() {
@@ -229,7 +278,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
List<String> tgs = new ArrayList<>();
tgs.add(serviceName);
serviceExccedsNameLimit.setTags(tgs);
- validateUserRoles(Role.ADMIN, Role.DESIGNER);
try {
bl.createService(serviceExccedsNameLimit, user);
} catch (ComponentException exp) {
@@ -267,6 +315,7 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
// Service name - end
// Service description - start
+
private void testServiceDescriptionEmpty() {
Service serviceExist = createServiceObject(false);
serviceExist.setDescription("");
@@ -278,7 +327,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
}
fail();
}
-
private void testServiceDescriptionMissing() {
Service serviceExist = createServiceObject(false);
serviceExist.setDescription(null);
@@ -329,6 +377,7 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
// Service description - stop
// Service icon - start
+
private void testServiceIconEmpty() {
Service serviceExist = createServiceObject(false);
serviceExist.setIcon("");
@@ -336,7 +385,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
assertThat(service.left().value().getIcon()).isEqualTo(DEFAULT_ICON);
}
-
private void testServiceIconMissing() {
Service serviceExist = createServiceObject(false);
serviceExist.setIcon(null);
@@ -401,6 +449,7 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
// Service tags - stop
// Service contactId - start
+
private void testContactIdTooLong() {
Service serviceContactId = createServiceObject(false);
// 59 chars instead of 50
@@ -414,7 +463,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
}
fail();
}
-
private void testContactIdWrongFormatCreate() {
Service serviceContactId = createServiceObject(false);
// 3 letters and 3 digits and special characters
@@ -443,6 +491,7 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
// Service contactId - stop
// Service category - start
+
private void testServiceCategoryExist() {
Service serviceExist = createServiceObject(false);
serviceExist.setCategories(null);
@@ -454,7 +503,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
}
fail();
}
-
@Test
public void markDistributionAsDeployedTestAlreadyDeployed() {
String notifyAction = "DNotify";
@@ -538,6 +586,7 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
// Service category - stop
// Service projectCode - start
+
private void testInvalidProjectCode() {
Service serviceExist = createServiceObject(false);
@@ -552,7 +601,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
fail();
}
-
private void testProjectCodeTooLong() {
Service serviceExist = createServiceObject(false);
@@ -695,7 +743,6 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
@Test
public void testDerivedFromGeneric() {
Service service = createServiceObject(true);
- validateUserRoles(Role.ADMIN, Role.DESIGNER);
when(toscaOperationFacade.createToscaComponent(service)).thenReturn(Either.left(service));
when(genericTypeBusinessLogic.fetchDerivedFromGenericType(service)).thenReturn(Either.left(genericService));
Either<Service, ResponseFormat> createResponse = bl.createService(service, user);
@@ -947,4 +994,29 @@ public class ServiceBusinessLogicTest extends ServiceBussinessLogicBaseTestSetup
Assert.assertEquals(HttpStatus.NOT_FOUND.value(), operationEither.right().value().getStatus().intValue());
}
+ private Resource mockGenericTypeResource() {
+ final Resource genericTypeResource = new Resource();
+ genericTypeResource.setProperties(mockPropertyList());
+ return genericTypeResource;
+ }
+
+ private List<PropertyDefinition> mockPropertyList() {
+ final List<PropertyDefinition> propertyList = new ArrayList<>();
+ final PropertyDefinition propertyDefinition1 = new PropertyDefinition();
+ propertyDefinition1.setName("property1");
+ propertyDefinition1.setType("string");
+ propertyList.add(propertyDefinition1);
+
+ final PropertyDefinition propertyDefinition2 = new PropertyDefinition();
+ propertyDefinition2.setName("property2");
+ propertyDefinition2.setType("boolean");
+ propertyList.add(propertyDefinition2);
+
+ final PropertyDefinition propertyDefinition3 = new PropertyDefinition();
+ propertyDefinition3.setName("property3");
+ propertyDefinition3.setType("string");
+ propertyList.add(propertyDefinition3);
+ return propertyList;
+ }
+
}