re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / tosca / PolicyExportParserImplTest.java
1 package org.openecomp.sdc.be.tosca;
2
3 import fj.data.Either;
4 import org.junit.Test;
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;
17
18 import java.util.*;
19
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;
23
24 @RunWith(MockitoJUnitRunner.class)
25 public class PolicyExportParserImplTest {
26
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";
37         
38         private PolicyExportParser policiyExportParser;
39     
40         @Mock
41         private ApplicationDataTypeCache dataTypeCache;
42         
43         @Mock
44         private Component component;
45                 
46         @Test
47         public void failToGetAllDataTypes() {
48                 
49                 when(dataTypeCache.getAll()).thenReturn(Either.right(null));
50                 assertThatExceptionOfType(SdcResourceNotFoundException.class).isThrownBy(() -> policiyExportParser = new PolicyExportParserImpl(dataTypeCache));
51         }
52         
53         @Test
54         public void noPoliciesInComponent() {
55                 
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);
61         }
62         
63         @Test
64         public void onePoliciesInComponent() {
65                 
66                 List<Integer> constIndexes = Arrays.asList(new Integer[] {0});
67             testPoliciesInComponent(constIndexes);
68         }
69         
70         @Test
71         public void twoPoliciesInComponent() {
72                 
73                 List<Integer> constIndexes = Arrays.asList(new Integer[] {0,1});                
74                 testPoliciesInComponent(constIndexes);          
75         }
76
77         private void testPoliciesInComponent(List<Integer> constIndexes) {
78                 when(dataTypeCache.getAll()).thenReturn(Either.left(null));
79                 Map<String, PolicyDefinition> policiesToAdd = getPolicies(constIndexes);
80                 
81                 when(component.getPolicies()).thenReturn(policiesToAdd);
82                 when(component.getComponentInstances()).thenReturn(getComponentInstances());
83                 when(component.getGroups()).thenReturn(getGroups());
84                 policiyExportParser = new PolicyExportParserImpl(dataTypeCache);
85                 
86                 Map<String, ToscaPolicyTemplate> policies = policiyExportParser.getPolicies(component);
87                 
88                 for(Integer i : constIndexes) {
89                         
90                         
91                         ToscaPolicyTemplate toscaPolicyTemplate = policies.get(POLICY_NAMES[i]);
92                         ToscaMetadata metadata = (ToscaMetadata) toscaPolicyTemplate.getMetadata();
93                         
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]);
98                         
99                         String type = toscaPolicyTemplate.getType();
100                         assertThat(type).isEqualTo(POLICY_TYPE_NAMES[i]);
101                         
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);                        
105                 }               
106         }       
107
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);
114                 return groups;
115         }
116
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;
124         }
125
126         private Map<String, PolicyDefinition> getPolicies(List<Integer> indexes) {
127                 Map<String, PolicyDefinition> policies = new HashMap<>();
128                 
129                 for (int index : indexes) {
130                         
131                         PolicyDefinition policyDefinition = new PolicyDefinition();
132                         
133                         // Set type
134                         policyDefinition.setPolicyTypeName(POLICY_TYPE_NAMES[index]);
135                         
136                         // Set Metadata
137                         policyDefinition.setInvariantUUID(INVARIANT_UUIDS[index]);
138                         policyDefinition.setPolicyUUID(POLICY_UUIDS[index]);
139                         policyDefinition.setName(POLICY_NAMES[index]);
140                         policyDefinition.setVersion(VERSIONS[index]);
141                         
142                         // Set targets
143                         policyDefinition.setTargets(getTargers());                      
144                         
145                         policies.put(POLICY_KEYS[index],policyDefinition);
146                 }               
147                 return policies;
148         }
149
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));
154                 return targets;
155         }       
156 }