Sync Integ to Master
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / utils / PolicyTypeImportUtilsTest.java
1 package org.openecomp.sdc.be.components.impl.utils;
2
3 import com.google.common.collect.ImmutableMap;
4 import org.junit.Test;
5 import org.openecomp.sdc.be.components.utils.PolicyTypeBuilder;
6 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
7 import org.openecomp.sdc.be.model.PolicyTypeDefinition;
8 import org.openecomp.sdc.be.model.PropertyDefinition;
9 import org.openecomp.sdc.be.model.tosca.constraints.GreaterThanConstraint;
10 import org.openecomp.sdc.be.model.tosca.constraints.MinLengthConstraint;
11
12 import java.util.ArrayList;
13 import java.util.Arrays;
14 import java.util.Collections;
15 import java.util.List;
16
17 import static org.assertj.core.api.Assertions.assertThat;
18
19
20 public class PolicyTypeImportUtilsTest {
21
22     private static final String UNIQUE_ID_EXSISTS = "uniqueId";
23
24     @Test
25     public void isPolicyTypesEquals_whenBothTypesAreNull_returnTrue() {
26         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(null, null)).isTrue();
27     }
28
29     @Test
30     public void isPolicyTypesEquals_whenOneTypeIsNull_returnFalse() {
31         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(new PolicyTypeDefinition(), null)).isFalse();
32         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(null, new PolicyTypeDefinition())).isFalse();
33     }
34
35     @Test
36     public void isPolicyTypesEquals_whenTypesIsSameObject_returnTrue() {
37         PolicyTypeDefinition policyType = new PolicyTypeDefinition();
38         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(policyType, policyType)).isTrue();
39     }
40
41     @Test
42     public void isPolicyTypesEquals_allFieldsEquals_returnTrue() {
43         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(createPolicyTypeWithAllFields(), createPolicyTypeWithAllFields())).isTrue();
44     }
45
46     @Test
47     public void isPolicyTypeEquals_whenTypesAreDifferentInANonCompareFields_returnTrue() {
48         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
49         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
50         type2.setOwnerId("ownerIdNew");
51         type2.setModificationTime(System.currentTimeMillis());
52         type2.setCreationTime(System.currentTimeMillis());
53         type2.setUniqueId("uniqueIdNew");
54         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
55     }
56
57     @Test
58     public void isPolicyTypesEquals_whenTypeIsDifferent_returnFalse() {
59         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
60         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
61         type2.setType("newType");
62         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
63     }
64
65     @Test
66     public void isPolicyTypesEquals_whenDescriptionIsDifferent_returnFalse() {
67         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
68         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
69         type2.setDescription("newDescription");
70         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
71     }
72
73     @Test
74     public void isPolicyTypesEquals_whenTargetsAreDifferent_returnFalse() {
75         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
76         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
77         type2.setTargets(new ArrayList<>());
78         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
79     }
80
81     @Test
82     public void isPolicyTypesEquals_whenDerivedFromIsDifferent_returnFalse() {
83         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
84         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
85         type2.setDerivedFrom("newDerivedFrom");
86         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
87     }
88
89     @Test
90     public void isPolicyTypesEquals_whenVersionIsDifferent_returnFalse() {
91         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
92         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
93         type2.setVersion("2.0");
94         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
95     }
96
97     @Test
98     public void isPolicyTypesEquals_whenMetadataIsDifferent_returnFalse() {
99         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
100         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
101         type2.setMetadata(ImmutableMap.of("newKey", "newVal"));
102         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
103     }
104
105     @Test
106     public void isPolicyTypeEquals_whenPropertiesListNotOfSameSize_returnFalse() {
107         PolicyTypeDefinition noProperties = new PolicyTypeDefinition();
108         PolicyTypeDefinition emptyProperties = new PolicyTypeBuilder().setProperties(Collections.emptyList()).build();
109         PolicyTypeDefinition oneProp = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
110         PolicyTypeDefinition twoProps = new PolicyTypeBuilder().setProperties(Arrays.asList(createPropertyDefinitionWithAllFields("prop1"),
111                                                                                             createPropertyDefinitionWithAllFields("prop2")))
112                                                                 .build();
113         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(noProperties, oneProp)).isFalse();
114         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(emptyProperties, oneProp)).isFalse();
115         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(twoProps, oneProp)).isFalse();
116     }
117
118     @Test
119     public void isPolicyTypeEquals_whenPropertiesSamePropertiesList_returnTrue() {
120         List<PropertyDefinition> propList = Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"));
121         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(propList).build();
122         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(propList).build();
123         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
124     }
125
126     @Test
127     public void isPolicyTypeEquals_whenPropertiesListFieldsEquals_returnTrue() {
128         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
129         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
130         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
131     }
132
133     @Test
134     public void isPolicyTypeEquals_whenPropertiesListDifferentInANonComparedFields_returnTrue() {
135         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
136         PropertyDefinition prop1DiffNonComparedFields = createPropertyDefinitionWithAllFields("prop1");
137         prop1DiffNonComparedFields.setOwnerId("newOwner");
138         prop1DiffNonComparedFields.setValue("newVal");
139         prop1DiffNonComparedFields.setConstraints(null);
140         prop1DiffNonComparedFields.setUniqueId("newId");
141         prop1DiffNonComparedFields.setHidden(true);
142
143         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
144         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffNonComparedFields)).build();
145         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
146     }
147
148     @Test
149     public void isPolicyTypeEquals_whenPropertiesNotOfSameName_returnFalse() {
150         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
151         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop2"))).build();
152         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
153     }
154
155     @Test
156     public void isPolicyTypeEquals_whenPropertiesNotOFSameType_returnFalse() {
157         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
158         PropertyDefinition prop1TypeInteger = createPropertyDefinitionWithAllFields("prop1");
159         prop1TypeInteger.setType("integer");
160
161         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
162         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1TypeInteger)).build();
163         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
164     }
165
166     @Test
167     public void isPolicyTypeEquals_whenPropertiesNotOfSameDefaultVal_returnFalse() {
168         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
169         PropertyDefinition prop1DiffDefault = createPropertyDefinitionWithAllFields("prop1");
170         prop1DiffDefault.setDefaultValue("newDefVal");
171
172         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
173         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffDefault)).build();
174         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
175     }
176
177     @Test
178     public void isPolicyTypeEquals_whenPropertiesNotOfSameSchema_returnFalse() {
179         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
180         PropertyDefinition prop1DiffSchema = createPropertyDefinitionWithAllFields("prop1");
181         prop1DiffSchema.setSchema(null);
182
183         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
184         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffSchema)).build();
185         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
186     }
187
188     @Test
189     public void isPolicyTypeEquals_whenPropertiesIsPasswordFieldNotSame_returnFalse() {
190         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
191         PropertyDefinition prop1DiffIsPassword = createPropertyDefinitionWithAllFields("prop1");
192         prop1DiffIsPassword.setPassword(!prop1.isPassword());
193
194         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
195         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffIsPassword)).build();
196         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
197     }
198
199     @Test
200     public void isPolicyTypeEquals_whenPropertiesIsRequiredFieldNotSame_returnFalse() {
201         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
202         PropertyDefinition prop1DiffIsRequired = createPropertyDefinitionWithAllFields("prop1");
203         prop1DiffIsRequired.setRequired(!prop1.isRequired());
204
205         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
206         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffIsRequired)).build();
207         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
208     }
209
210     @Test
211     public void isPolicyTypeEquals_whenPropertiesNotSameDescription_returnFalse() {
212         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
213         PropertyDefinition prop1DiffDescription = createPropertyDefinitionWithAllFields("prop1");
214         prop1DiffDescription.setDescription("newDescription");
215
216         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
217         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffDescription)).build();
218         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
219     }
220
221     private PolicyTypeDefinition createPolicyTypeWithAllFields() {
222         return new PolicyTypeBuilder()
223                 .setType("type1")
224                 .setDerivedFrom("derivedFrom")
225                 .setVersion("1.0")
226                 .setDescription("description")
227                 .setUniqueId("id1")
228                 .setHighestVersion(true)
229                 .setModificationTime(System.currentTimeMillis())
230                 .setCreationTime(System.currentTimeMillis())
231                 .setTargets(getTargets())
232                 .setOwner("owner")
233                 .setMetadata(ImmutableMap.of("key1", "val1", "key2", "val2"))
234                 .build();
235     }
236
237     private PropertyDefinition createPropertyDefinitionWithAllFields(String name) {
238         return new PropertyDataDefinitionBuilder()
239                 .setConstraints(Arrays.asList(new GreaterThanConstraint("abc"), new MinLengthConstraint(5)))
240                 .setUniqueId("uid")
241                 .setDefaultValue("val1")
242                 .setType("string")
243                 .setValue("val1")
244                 .setName(name)
245                 .setSchemaType("string")
246                 .setOwnerId("owner")
247                 .setStatus("status")
248                 .setDescription("description")
249                 .setIsPassword(false)
250                 .setIsRequired(false)
251                 .build();
252     }
253
254     private List<String> getTargets() {
255
256         return Collections.singletonList(UNIQUE_ID_EXSISTS);
257     }
258 }