1 package org.openecomp.sdc.be.tosca;
5 import org.junit.runner.RunWith;
6 import org.mockito.Mock;
7 import org.mockito.junit.MockitoJUnitRunner;
8 import org.openecomp.sdc.be.components.impl.exceptions.SdcResourceNotFoundException;
9 import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType;
10 import org.openecomp.sdc.be.model.Component;
11 import org.openecomp.sdc.be.model.ComponentInstance;
12 import org.openecomp.sdc.be.model.GroupDefinition;
13 import org.openecomp.sdc.be.model.PolicyDefinition;
14 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
15 import org.openecomp.sdc.be.tosca.model.ToscaMetadata;
16 import org.openecomp.sdc.be.tosca.model.ToscaPolicyTemplate;
20 import static org.assertj.core.api.Assertions.assertThat;
21 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
22 import static org.mockito.Mockito.when;
24 @RunWith(MockitoJUnitRunner.class)
25 public class PolicyExportParserImplTest {
27 private static final String[] POLICY_KEYS = {"policy_key_1","policy_key_2"};
28 private static final String[] VERSIONS = {"version_1","version_1"};
29 private static final String[] POLICY_NAMES = {"name_1","name_2"};
30 private static final String[] POLICY_UUIDS = {"policyUUID_1","policyUUID_2"};
31 private static final String[] INVARIANT_UUIDS = {"invariantUUID_1","invariantUUID_2"};
32 private static final String[] POLICY_TYPE_NAMES = {"policyTypeName_1","policyTypeName_2"};
33 private static final String[] POLICY_COMPONENT_INSTANCES = {"policyComponentInstanceId"};
34 private static final String POLICY_COMPONENT_INSTANCES_NAME = "policyComponentInstanceName";
35 private static final String[] POLICY_GROUPS = {"policyGroupId"};
36 private static final String POLICY_GROUP_NAME = "PolicyGroupName";
38 private PolicyExportParser policiyExportParser;
41 private ApplicationDataTypeCache dataTypeCache;
44 private Component component;
47 public void failToGetAllDataTypes() {
49 when(dataTypeCache.getAll()).thenReturn(Either.right(null));
50 assertThatExceptionOfType(SdcResourceNotFoundException.class).isThrownBy(() -> policiyExportParser = new PolicyExportParserImpl(dataTypeCache));
54 public void noPoliciesInComponent() {
56 when(dataTypeCache.getAll()).thenReturn(Either.left(null));
57 when(component.getPolicies()).thenReturn(null);
58 policiyExportParser = new PolicyExportParserImpl(dataTypeCache);
59 Map<String, ToscaPolicyTemplate> policies = policiyExportParser.getPolicies(component);
60 assertThat(policies).isEqualTo(null);
64 public void onePoliciesInComponent() {
66 List<Integer> constIndexes = Arrays.asList(new Integer[] {0});
67 testPoliciesInComponent(constIndexes);
71 public void twoPoliciesInComponent() {
73 List<Integer> constIndexes = Arrays.asList(new Integer[] {0,1});
74 testPoliciesInComponent(constIndexes);
77 private void testPoliciesInComponent(List<Integer> constIndexes) {
78 when(dataTypeCache.getAll()).thenReturn(Either.left(null));
79 Map<String, PolicyDefinition> policiesToAdd = getPolicies(constIndexes);
81 when(component.getPolicies()).thenReturn(policiesToAdd);
82 when(component.getComponentInstances()).thenReturn(getComponentInstances());
83 when(component.getGroups()).thenReturn(getGroups());
84 policiyExportParser = new PolicyExportParserImpl(dataTypeCache);
86 Map<String, ToscaPolicyTemplate> policies = policiyExportParser.getPolicies(component);
88 for(Integer i : constIndexes) {
91 ToscaPolicyTemplate toscaPolicyTemplate = policies.get(POLICY_NAMES[i]);
92 ToscaMetadata metadata = (ToscaMetadata) toscaPolicyTemplate.getMetadata();
94 assertThat(metadata.getInvariantUUID()).isEqualTo(INVARIANT_UUIDS[i]);
95 assertThat(metadata.getUUID()).isEqualTo(POLICY_UUIDS[i]);
96 assertThat(metadata.getName()).isEqualTo(POLICY_NAMES[i]);
97 assertThat(metadata.getVersion()).isEqualTo(VERSIONS[i]);
99 String type = toscaPolicyTemplate.getType();
100 assertThat(type).isEqualTo(POLICY_TYPE_NAMES[i]);
102 List<String> targets = toscaPolicyTemplate.getTargets();
103 assertThat(targets.get(0)).isEqualTo(POLICY_COMPONENT_INSTANCES_NAME);
104 assertThat(targets.get(1)).isEqualTo(POLICY_GROUP_NAME);
108 private List<GroupDefinition> getGroups() {
109 List<GroupDefinition> groups = new ArrayList<>();
110 GroupDefinition groupDefinition = new GroupDefinition();
111 groupDefinition.setUniqueId(POLICY_GROUPS[0]);
112 groupDefinition.setName(POLICY_GROUP_NAME);
113 groups.add(groupDefinition);
117 private List<ComponentInstance> getComponentInstances() {
118 List<ComponentInstance> componentInstances = new ArrayList<>();
119 ComponentInstance componentInstance = new ComponentInstance();
120 componentInstance.setUniqueId(POLICY_COMPONENT_INSTANCES[0]);
121 componentInstance.setName(POLICY_COMPONENT_INSTANCES_NAME);
122 componentInstances.add(componentInstance);
123 return componentInstances;
126 private Map<String, PolicyDefinition> getPolicies(List<Integer> indexes) {
127 Map<String, PolicyDefinition> policies = new HashMap<>();
129 for (int index : indexes) {
131 PolicyDefinition policyDefinition = new PolicyDefinition();
134 policyDefinition.setPolicyTypeName(POLICY_TYPE_NAMES[index]);
137 policyDefinition.setInvariantUUID(INVARIANT_UUIDS[index]);
138 policyDefinition.setPolicyUUID(POLICY_UUIDS[index]);
139 policyDefinition.setName(POLICY_NAMES[index]);
140 policyDefinition.setVersion(VERSIONS[index]);
143 policyDefinition.setTargets(getTargers());
145 policies.put(POLICY_KEYS[index],policyDefinition);
150 private Map<PolicyTargetType, List<String>> getTargers() {
151 Map<PolicyTargetType, List<String>> targets = new HashMap<>();
152 targets.put(PolicyTargetType.COMPONENT_INSTANCES, Arrays.asList(POLICY_COMPONENT_INSTANCES));
153 targets.put(PolicyTargetType.GROUPS, Arrays.asList(POLICY_GROUPS));