Upgrade SDC from Titan to Janus Graph
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / property / propertytopolicydeclarators / ComponentInstancePropertyToPolicyDeclaratorTest.java
1 package org.openecomp.sdc.be.components.property.propertytopolicydeclarators;
2
3 import static org.mockito.ArgumentMatchers.any;
4 import static org.mockito.ArgumentMatchers.eq;
5 import static org.mockito.Mockito.verify;
6 import static org.mockito.Mockito.when;
7
8 import fj.data.Either;
9 import java.util.Arrays;
10 import java.util.Collections;
11 import java.util.List;
12 import java.util.Map;
13 import java.util.Optional;
14 import org.junit.Assert;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.mockito.ArgumentCaptor;
18 import org.mockito.Captor;
19 import org.mockito.InjectMocks;
20 import org.mockito.Mock;
21 import org.mockito.MockitoAnnotations;
22 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
23 import org.openecomp.sdc.be.components.impl.PropertyBusinessLogic;
24 import org.openecomp.sdc.be.datatypes.elements.PolicyDataDefinition;
25 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
26 import org.openecomp.sdc.be.model.ComponentInstance;
27 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
28 import org.openecomp.sdc.be.model.PolicyDefinition;
29 import org.openecomp.sdc.be.model.Service;
30 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
31 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
32
33 public class ComponentInstancePropertyToPolicyDeclaratorTest {
34
35     @Mock
36     private ToscaOperationFacade toscaOperationFacade;
37     @Mock
38     private PropertyBusinessLogic propertyBl;
39     @Mock
40     private ComponentInstanceBusinessLogic componentInstanceBl;
41     @InjectMocks
42     private ComponentInstancePropertyToPolicyDeclarator declarator;
43     @Captor
44     private ArgumentCaptor<ComponentInstanceProperty> captor;
45
46     private static Service service;
47     private static ComponentInstance componentInstance;
48     private static PropertyDataDefinition prop1;
49     private static final String PROP_1_NAME = "prop1";
50     private static final String NON_EXIST_PROP_NAME = "prop1";
51     private static final String COMPONENT_INSTANCE_ID = "ciId";
52     private static final String NON_EXIST_ID = "nonExistId";
53
54
55     @Before
56     public void setUp() {
57         MockitoAnnotations.initMocks(this);
58
59         service = new Service();
60         componentInstance = new ComponentInstance();
61         componentInstance.setUniqueId(COMPONENT_INSTANCE_ID);
62         service.setComponentInstances(Collections.singletonList(componentInstance));
63
64         prop1 = new PolicyDataDefinition();
65         prop1.setName(PROP_1_NAME);
66     }
67
68     @Test
69     public void testCreateDeclaredProperty_success() {
70         ComponentInstanceProperty declaredProperty = declarator.createDeclaredProperty(prop1);
71         Assert.assertEquals(prop1.getName(), declaredProperty.getName());
72     }
73
74     @Test
75     public void testUpdatePropertiesValues_success() {
76         List<ComponentInstanceProperty> properties = Arrays.asList(new ComponentInstanceProperty(prop1));
77         Map<String, List<ComponentInstanceProperty>> expectedInstanceProperties =
78                 Collections.singletonMap(COMPONENT_INSTANCE_ID, properties);
79
80         when(toscaOperationFacade
81                      .addComponentInstancePropertiesToComponent(eq(service), eq(expectedInstanceProperties)))
82                 .thenReturn(Either.left(expectedInstanceProperties));
83
84
85         Either<Map<String, List<ComponentInstanceProperty>>, StorageOperationStatus> updateEither =
86                 (Either<Map<String, List<ComponentInstanceProperty>>, StorageOperationStatus>) declarator
87                                                                                                        .updatePropertiesValues(
88                                                                                                                service,
89                                                                                                                COMPONENT_INSTANCE_ID,
90                                                                                                                properties);
91
92         Assert.assertTrue(updateEither.isLeft());
93         Map<String, List<ComponentInstanceProperty>> actualInstanceProperties = updateEither.left().value();
94         validateUpdateResult(properties, expectedInstanceProperties, actualInstanceProperties);
95     }
96
97     @Test
98     public void testResolvePropertiesOwner_success() {
99         Optional<ComponentInstance> componentInstanceCandidate =
100                 declarator.resolvePropertiesOwner(service, COMPONENT_INSTANCE_ID);
101
102         Assert.assertTrue(componentInstanceCandidate.isPresent());
103         Assert.assertEquals(componentInstanceCandidate.get(), componentInstance);
104     }
105
106     @Test
107     public void testResolvePropertiesOwner_failure() {
108         Optional<ComponentInstance> componentInstanceCandidate =
109                 declarator.resolvePropertiesOwner(service, NON_EXIST_ID);
110
111         Assert.assertFalse(componentInstanceCandidate.isPresent());
112     }
113
114     @Test
115     public void testUnDeclarePropertiesAsPolicies_success() {
116         PolicyDefinition policyDefinition = new PolicyDefinition();
117         policyDefinition.setName(PROP_1_NAME);
118
119         when(componentInstanceBl.getComponentInstancePropertyByPolicyId(eq(service), eq(policyDefinition)))
120                 .thenReturn(Optional.of(new ComponentInstanceProperty(prop1)));
121         when(toscaOperationFacade
122                      .updateComponentInstanceProperty(any(), any(), captor.capture()))
123                 .thenReturn(StorageOperationStatus.OK);
124
125         StorageOperationStatus status =
126                 declarator.unDeclarePropertiesAsPolicies(service, policyDefinition);
127
128         Assert.assertEquals(status, StorageOperationStatus.OK);
129
130         ComponentInstanceProperty actualProperty = captor.getValue();
131         Assert.assertEquals(prop1.getName(), actualProperty.getName());
132     }
133
134     private void validateUpdateResult(List<ComponentInstanceProperty> properties,
135             Map<String, List<ComponentInstanceProperty>> expectedInstanceProperties,
136             Map<String, List<ComponentInstanceProperty>> actualInstanceProperties) {
137         Assert.assertEquals(expectedInstanceProperties.size(), actualInstanceProperties.size());
138         Assert.assertEquals(1, actualInstanceProperties.size());
139         Assert.assertEquals(expectedInstanceProperties.keySet(), actualInstanceProperties.keySet());
140
141         List<ComponentInstanceProperty> actualComponentInstanceProperties =
142                 actualInstanceProperties.get(COMPONENT_INSTANCE_ID);
143
144         Assert.assertEquals(properties, actualComponentInstanceProperties);
145     }
146 }