1 package org.openecomp.sdc.be.components.property;
4 import static org.mockito.ArgumentMatchers.eq;
5 import static org.mockito.Mockito.when;
8 import java.util.ArrayList;
9 import java.util.Collections;
10 import java.util.List;
11 import org.junit.Assert;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.mockito.ArgumentCaptor;
15 import org.mockito.Captor;
16 import org.mockito.InjectMocks;
17 import org.mockito.Mock;
18 import org.mockito.Mockito;
19 import org.mockito.junit.MockitoJUnitRunner;
20 import org.openecomp.sdc.be.components.property.propertytopolicydeclarators.ComponentPropertyToPolicyDeclarator;
21 import org.openecomp.sdc.be.datatypes.elements.GetPolicyValueDataDefinition;
22 import org.openecomp.sdc.be.model.PolicyDefinition;
23 import org.openecomp.sdc.be.model.PropertyDefinition;
24 import org.openecomp.sdc.be.model.Service;
25 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
26 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
28 @RunWith(MockitoJUnitRunner.class)
29 public class ComponentPropertyToPolicyDeclaratorTest extends PropertyDeclaratorTestBase {
32 ComponentPropertyToPolicyDeclarator declarator;
34 private ToscaOperationFacade toscaOperationFacade;
36 ArgumentCaptor<PropertyDefinition> propertyCaptor;
38 private static final String OWNER_ID = "ownerId";
39 private static final String SERVICE_ID = "serviceId";
40 private static final String PROPERTY_ID = "propertyId";
41 private static final String POLICY = "policy";
42 private static final String TEST_VALUE = "testValue";
46 public void testDeclarePropertyToPolicy_success() {
47 Service service = new Service();
48 service.setUniqueId(SERVICE_ID);
50 when(toscaOperationFacade.updatePropertyOfComponent(eq(service), Mockito.any())).thenReturn(Either.left(new PropertyDefinition()));
51 Either<List<PolicyDefinition>, StorageOperationStatus> declareEither = declarator.declarePropertiesAsPolicies(
52 service, OWNER_ID, createInstancePropInputList(Collections.singletonList(prop1)));
54 Assert.assertTrue(declareEither.isLeft());
58 public void testUndeclarePolicy_success() {
59 Service service = new Service();
60 service.setUniqueId(SERVICE_ID);
62 PolicyDefinition policyDefinition = createPolicyDefinition(PROPERTY_ID);
64 PropertyDefinition expectedProperty = createPropertyWithDeclaredPolicy(getPolicyId(PROPERTY_ID));
65 service.addProperty(expectedProperty);
67 when(toscaOperationFacade.updatePropertyOfComponent(eq(service), propertyCaptor.capture())).thenReturn(Either.left(new PropertyDefinition()));
69 StorageOperationStatus storageOperationStatus =
70 declarator.unDeclarePropertiesAsPolicies(service, policyDefinition);
72 PropertyDefinition actualProperty = propertyCaptor.getValue();
74 Assert.assertEquals(storageOperationStatus, storageOperationStatus.OK);
75 Assert.assertEquals(expectedProperty, actualProperty);
80 public void shouldReturnOriginalPropertyValueAfterUndeclaring() {
81 Service service = new Service();
82 service.setUniqueId(SERVICE_ID);
84 PropertyDefinition expectedProperty = new PropertyDefinition(prop1);
85 addGetPolicyValueToProperty(getPolicyId(prop1.getUniqueId()), expectedProperty);
86 service.addProperty(expectedProperty);
88 when(toscaOperationFacade.updatePropertyOfComponent(eq(service), propertyCaptor.capture())).thenReturn(Either.left(new PropertyDefinition()));
90 Either<List<PolicyDefinition>, StorageOperationStatus> declareEither = declarator.declarePropertiesAsPolicies(
91 service, OWNER_ID, createInstancePropInputList(Collections.singletonList(prop1)));
93 Assert.assertTrue(declareEither.isLeft());
95 PolicyDefinition policyDefinition = createPolicyDefinition(prop1.getUniqueId());
96 StorageOperationStatus storageOperationStatus =
97 declarator.unDeclarePropertiesAsPolicies(service, policyDefinition);
99 List<PropertyDefinition> actualProperties = propertyCaptor.getAllValues();
101 Assert.assertEquals(storageOperationStatus, storageOperationStatus.OK);
102 Assert.assertEquals(actualProperties.size(), 2);
103 Assert.assertEquals(prop1.getValue(), actualProperties.get(1).getValue());
106 private PropertyDefinition createPropertyWithDeclaredPolicy(String policyId) {
107 PropertyDefinition propertyDefinition = new PropertyDefinition();
108 propertyDefinition.setUniqueId(PROPERTY_ID);
110 addGetPolicyValueToProperty(policyId, propertyDefinition);
111 return propertyDefinition;
114 private void addGetPolicyValueToProperty(String policyId, PropertyDefinition propertyDefinition) {
115 GetPolicyValueDataDefinition getPolicyValueDataDefinition = new GetPolicyValueDataDefinition();
116 getPolicyValueDataDefinition.setPolicyId(policyId);
117 getPolicyValueDataDefinition.setPropertyName(propertyDefinition.getUniqueId());
118 getPolicyValueDataDefinition.setOrigPropertyValue(propertyDefinition.getValue());
120 List<GetPolicyValueDataDefinition> getPolicyList = new ArrayList<>();
121 getPolicyList.add(getPolicyValueDataDefinition);
122 propertyDefinition.setGetPolicyValues(getPolicyList);
125 private PolicyDefinition createPolicyDefinition(String propertyId) {
126 PolicyDefinition policyDefinition = new PolicyDefinition();
127 String policyId = getPolicyId(propertyId);
128 policyDefinition.setUniqueId(policyId);
130 return policyDefinition;
133 private String getPolicyId(String propertyId) {
134 return SERVICE_ID + "." + propertyId + "." + POLICY;