1 package org.openecomp.sdc.be.model.jsontitan.operations;
 
   3 import com.thinkaurelius.titan.core.TitanVertex;
 
   6 import org.junit.runner.RunWith;
 
   7 import org.mockito.InjectMocks;
 
   8 import org.mockito.Mock;
 
   9 import org.mockito.Mockito;
 
  10 import org.mockito.junit.MockitoJUnitRunner;
 
  11 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
 
  12 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
 
  13 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
 
  14 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
 
  15 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
 
  16 import org.openecomp.sdc.be.datatypes.elements.MapCapabilityProperty;
 
  17 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
 
  18 import org.openecomp.sdc.be.model.PolicyDefinition;
 
  19 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 
  20 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
 
  22 import java.util.Collections;
 
  23 import java.util.HashMap;
 
  25 import static org.assertj.core.api.Assertions.assertThat;
 
  26 import static org.mockito.ArgumentMatchers.any;
 
  27 import static org.mockito.ArgumentMatchers.eq;
 
  28 import static org.mockito.Mockito.when;
 
  30 @RunWith(MockitoJUnitRunner.class)
 
  32 public class TopologyTemplateOperationTest {
 
  34     private static final String CONTAINER_ID = "containerId";
 
  36     private TopologyTemplateOperation topologyTemplateOperation;
 
  38     private TitanDao titanDao;
 
  41     public void overrideToscaDataOfToscaElement_failedToFetchContainerVertex() {
 
  42         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(TitanOperationStatus.INVALID_ID));
 
  43         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
 
  44         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
 
  48     public void overrideToscaDataOfToscaElement_failedToFetchDataVertex() {
 
  49         GraphVertex containerVertex = new GraphVertex();
 
  50         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
 
  51         when(titanDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(TitanOperationStatus.NOT_FOUND));
 
  52         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
 
  53         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
 
  57     public void updateToscaDataDeepElements_failedToFetchContainerVertex() {
 
  58         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(TitanOperationStatus.INVALID_ID));
 
  59         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
 
  60         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
 
  64     public void updateToscaDataDeepElements_failedToFetchDataVertex() {
 
  65         GraphVertex containerVertex = new GraphVertex();
 
  66         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
 
  67         when(titanDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(TitanOperationStatus.NOT_FOUND));
 
  68         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
 
  69         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
 
  73     public void addPolicyToToscaElementSuccessTest(){
 
  74         TitanOperationStatus status = TitanOperationStatus.OK;
 
  75         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
 
  76         assertThat(result).isEqualTo(StorageOperationStatus.OK);
 
  80     public void addPolicyToToscaElementFailureTest(){
 
  81         TitanOperationStatus status = TitanOperationStatus.ALREADY_EXIST;
 
  82         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
 
  83         assertThat(result).isEqualTo(StorageOperationStatus.ENTITY_ALREADY_EXISTS);
 
  86     @SuppressWarnings("unchecked")
 
  87     private StorageOperationStatus addPolicyToToscaElementWithStatus(TitanOperationStatus status) {
 
  88         GraphVertex componentV = new GraphVertex();
 
  89         componentV.setVertex(Mockito.mock(TitanVertex.class));
 
  90         GraphVertex dataV = new GraphVertex();
 
  91         dataV.setVertex(Mockito.mock(TitanVertex.class));
 
  92         String componentName = "componentName";
 
  93         String componentId = UniqueIdBuilder.buildResourceUniqueId();
 
  94         String policyTypeName = "org.openecomp.policies.placement.valet.Affinity";
 
  95         componentV.setJsonMetadataField(JsonPresentationFields.NAME, componentName);
 
  96         componentV.setUniqueId(componentId);
 
  97         PolicyDefinition policy = new PolicyDefinition();
 
  98         policy.setPolicyTypeName(policyTypeName);
 
 100         Either<GraphVertex, TitanOperationStatus> toscaDataVertexRes = Either.right(TitanOperationStatus.NOT_FOUND);
 
 101         when(titanDao.getChildVertex(eq(componentV), eq(EdgeLabelEnum.POLICIES), eq(JsonParseFlagEnum.ParseJson))).thenReturn(toscaDataVertexRes);
 
 102         Either<GraphVertex, TitanOperationStatus> createVertex = Either.left(dataV);
 
 103         when(titanDao.createVertex(any(GraphVertex.class))).thenReturn(createVertex);
 
 104         when(titanDao.createEdge(any(TitanVertex.class), any(TitanVertex.class), any(EdgeLabelEnum.class), any(HashMap.class))).thenReturn(status);
 
 105         return topologyTemplateOperation.addPolicyToToscaElement(componentV, policy, counter);