re base code
[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 whenNameIsDifferent_returnFalse() {
67         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
68         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
69         type2.setName("newName");
70         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
71     }
72
73     @Test
74     public void whenIconIsDifferent_returnFalse() {
75         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
76         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
77         type2.setIcon("newIcon");
78         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
79     }
80
81     @Test
82     public void isPolicyTypesEquals_whenDescriptionIsDifferent_returnFalse() {
83         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
84         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
85         type2.setDescription("newDescription");
86         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
87     }
88
89     @Test
90     public void isPolicyTypesEquals_whenTargetsAreDifferent_returnFalse() {
91         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
92         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
93         type2.setTargets(new ArrayList<>());
94         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
95     }
96
97     @Test
98     public void isPolicyTypesEquals_whenDerivedFromIsDifferent_returnFalse() {
99         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
100         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
101         type2.setDerivedFrom("newDerivedFrom");
102         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
103     }
104
105     @Test
106     public void isPolicyTypesEquals_whenVersionIsDifferent_returnFalse() {
107         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
108         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
109         type2.setVersion("2.0");
110         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
111     }
112
113     @Test
114     public void isPolicyTypesEquals_whenMetadataIsDifferent_returnFalse() {
115         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
116         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
117         type2.setMetadata(ImmutableMap.of("newKey", "newVal"));
118         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
119     }
120
121     @Test
122     public void whenBothPropertiesListNull_returnTrue() {
123         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals( new PolicyTypeDefinition(),  new PolicyTypeDefinition())).isTrue();
124     }
125
126     @Test
127     public void whenOnePropertiesListIsNullAndSecondOneIsEmpty_returnTrue() {
128         PolicyTypeDefinition noProperties = new PolicyTypeDefinition();
129         PolicyTypeDefinition emptyProperties = new PolicyTypeBuilder().setProperties(Collections.emptyList()).build();
130         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(noProperties, emptyProperties)).isTrue();
131         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(emptyProperties, noProperties)).isTrue();
132     }
133
134     @Test
135     public void isPolicyTypeEquals_whenPropertiesListNotOfSameSize_returnFalse() {
136         PolicyTypeDefinition noProperties = new PolicyTypeDefinition();
137         PolicyTypeDefinition emptyProperties = new PolicyTypeBuilder().setProperties(Collections.emptyList()).build();
138         PolicyTypeDefinition oneProp = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
139         PolicyTypeDefinition twoProps = new PolicyTypeBuilder().setProperties(Arrays.asList(createPropertyDefinitionWithAllFields("prop1"),
140                                                                                             createPropertyDefinitionWithAllFields("prop2")))
141                                                                 .build();
142         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(noProperties, oneProp)).isFalse();
143         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(emptyProperties, oneProp)).isFalse();
144         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(twoProps, oneProp)).isFalse();
145     }
146
147     @Test
148     public void isPolicyTypeEquals_whenPropertiesSamePropertiesList_returnTrue() {
149         List<PropertyDefinition> propList = Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"));
150         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(propList).build();
151         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(propList).build();
152         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
153     }
154
155     @Test
156     public void isPolicyTypeEquals_whenPropertiesListFieldsEquals_returnTrue() {
157         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
158         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
159         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
160     }
161
162     @Test
163     public void isPolicyTypeEquals_whenPropertiesListDifferentInANonComparedFields_returnTrue() {
164         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
165         PropertyDefinition prop1DiffNonComparedFields = createPropertyDefinitionWithAllFields("prop1");
166         prop1DiffNonComparedFields.setOwnerId("newOwner");
167         prop1DiffNonComparedFields.setValue("newVal");
168         prop1DiffNonComparedFields.setConstraints(null);
169         prop1DiffNonComparedFields.setUniqueId("newId");
170         prop1DiffNonComparedFields.setHidden(true);
171
172         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
173         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffNonComparedFields)).build();
174         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
175     }
176
177     @Test
178     public void isPolicyTypeEquals_whenPropertiesNotOfSameName_returnFalse() {
179         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
180         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop2"))).build();
181         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
182     }
183
184     @Test
185     public void isPolicyTypeEquals_whenPropertiesNotOFSameType_returnFalse() {
186         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
187         PropertyDefinition prop1TypeInteger = createPropertyDefinitionWithAllFields("prop1");
188         prop1TypeInteger.setType("integer");
189
190         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
191         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1TypeInteger)).build();
192         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
193     }
194
195     @Test
196     public void isPolicyTypeEquals_whenPropertiesNotOfSameDefaultVal_returnFalse() {
197         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
198         PropertyDefinition prop1DiffDefault = createPropertyDefinitionWithAllFields("prop1");
199         prop1DiffDefault.setDefaultValue("newDefVal");
200
201         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
202         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffDefault)).build();
203         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
204     }
205
206     @Test
207     public void isPolicyTypeEquals_whenPropertiesNotOfSameSchema_returnFalse() {
208         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
209         PropertyDefinition prop1DiffSchema = createPropertyDefinitionWithAllFields("prop1");
210         prop1DiffSchema.setSchema(null);
211
212         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
213         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffSchema)).build();
214         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
215     }
216
217     @Test
218     public void isPolicyTypeEquals_whenPropertiesIsPasswordFieldNotSame_returnFalse() {
219         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
220         PropertyDefinition prop1DiffIsPassword = createPropertyDefinitionWithAllFields("prop1");
221         prop1DiffIsPassword.setPassword(!prop1.isPassword());
222
223         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
224         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffIsPassword)).build();
225         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
226     }
227
228     @Test
229     public void isPolicyTypeEquals_whenPropertiesIsRequiredFieldNotSame_returnFalse() {
230         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
231         PropertyDefinition prop1DiffIsRequired = createPropertyDefinitionWithAllFields("prop1");
232         prop1DiffIsRequired.setRequired(!prop1.isRequired());
233
234         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
235         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffIsRequired)).build();
236         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
237     }
238
239     @Test
240     public void isPolicyTypeEquals_whenPropertiesNotSameDescription_returnFalse() {
241         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
242         PropertyDefinition prop1DiffDescription = createPropertyDefinitionWithAllFields("prop1");
243         prop1DiffDescription.setDescription("newDescription");
244
245         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
246         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffDescription)).build();
247         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
248     }
249
250     private PolicyTypeDefinition createPolicyTypeWithAllFields() {
251         return new PolicyTypeBuilder()
252                 .setType("type1")
253                 .setDerivedFrom("derivedFrom")
254                 .setVersion("1.0")
255                 .setDescription("description")
256                 .setUniqueId("id1")
257                 .setHighestVersion(true)
258                 .setModificationTime(System.currentTimeMillis())
259                 .setCreationTime(System.currentTimeMillis())
260                 .setTargets(getTargets())
261                 .setOwner("owner")
262                 .setName("name")
263                 .setIcon("icon")
264                 .setMetadata(ImmutableMap.of("key1", "val1", "key2", "val2"))
265                 .build();
266     }
267
268     private PropertyDefinition createPropertyDefinitionWithAllFields(String name) {
269         return new PropertyDataDefinitionBuilder()
270                 .setConstraints(Arrays.asList(new GreaterThanConstraint("abc"), new MinLengthConstraint(5)))
271                 .setUniqueId("uid")
272                 .setDefaultValue("val1")
273                 .setType("string")
274                 .setValue("val1")
275                 .setName(name)
276                 .setSchemaType("string")
277                 .setOwnerId("owner")
278                 .setStatus("status")
279                 .setDescription("description")
280                 .setIsPassword(false)
281                 .setIsRequired(false)
282                 .build();
283     }
284
285     private List<String> getTargets() {
286
287         return Collections.singletonList(UNIQUE_ID_EXSISTS);
288     }
289 }