1 package org.openecomp.sdc.be.components.property.propertytopolicydeclarators;
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;
9 import java.util.Arrays;
10 import java.util.Collections;
11 import java.util.List;
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;
33 public class ComponentInstancePropertyToPolicyDeclaratorTest {
36 private ToscaOperationFacade toscaOperationFacade;
38 private PropertyBusinessLogic propertyBl;
40 private ComponentInstanceBusinessLogic componentInstanceBl;
42 private ComponentInstancePropertyToPolicyDeclarator declarator;
44 private ArgumentCaptor<ComponentInstanceProperty> captor;
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";
57 MockitoAnnotations.initMocks(this);
59 service = new Service();
60 componentInstance = new ComponentInstance();
61 componentInstance.setUniqueId(COMPONENT_INSTANCE_ID);
62 service.setComponentInstances(Collections.singletonList(componentInstance));
64 prop1 = new PolicyDataDefinition();
65 prop1.setName(PROP_1_NAME);
69 public void testCreateDeclaredProperty_success() {
70 ComponentInstanceProperty declaredProperty = declarator.createDeclaredProperty(prop1);
71 Assert.assertEquals(prop1.getName(), declaredProperty.getName());
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);
80 when(toscaOperationFacade
81 .addComponentInstancePropertiesToComponent(eq(service), eq(expectedInstanceProperties)))
82 .thenReturn(Either.left(expectedInstanceProperties));
85 Either<Map<String, List<ComponentInstanceProperty>>, StorageOperationStatus> updateEither =
86 (Either<Map<String, List<ComponentInstanceProperty>>, StorageOperationStatus>) declarator
87 .updatePropertiesValues(
89 COMPONENT_INSTANCE_ID,
92 Assert.assertTrue(updateEither.isLeft());
93 Map<String, List<ComponentInstanceProperty>> actualInstanceProperties = updateEither.left().value();
94 validateUpdateResult(properties, expectedInstanceProperties, actualInstanceProperties);
98 public void testResolvePropertiesOwner_success() {
99 Optional<ComponentInstance> componentInstanceCandidate =
100 declarator.resolvePropertiesOwner(service, COMPONENT_INSTANCE_ID);
102 Assert.assertTrue(componentInstanceCandidate.isPresent());
103 Assert.assertEquals(componentInstanceCandidate.get(), componentInstance);
107 public void testResolvePropertiesOwner_failure() {
108 Optional<ComponentInstance> componentInstanceCandidate =
109 declarator.resolvePropertiesOwner(service, NON_EXIST_ID);
111 Assert.assertFalse(componentInstanceCandidate.isPresent());
115 public void testUnDeclarePropertiesAsPolicies_success() {
116 PolicyDefinition policyDefinition = new PolicyDefinition();
117 policyDefinition.setName(PROP_1_NAME);
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);
125 StorageOperationStatus status =
126 declarator.unDeclarePropertiesAsPolicies(service, policyDefinition);
128 Assert.assertEquals(status, StorageOperationStatus.OK);
130 ComponentInstanceProperty actualProperty = captor.getValue();
131 Assert.assertEquals(prop1.getName(), actualProperty.getName());
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());
141 List<ComponentInstanceProperty> actualComponentInstanceProperties =
142 actualInstanceProperties.get(COMPONENT_INSTANCE_ID);
144 Assert.assertEquals(properties, actualComponentInstanceProperties);