Added oparent to sdc main
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / utils / PolicyTypeImportUtilsTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.components.impl.utils;
22
23 import com.google.common.collect.ImmutableMap;
24 import org.junit.Test;
25 import org.openecomp.sdc.be.components.utils.PolicyTypeBuilder;
26 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
27 import org.openecomp.sdc.be.model.PolicyTypeDefinition;
28 import org.openecomp.sdc.be.model.PropertyDefinition;
29 import org.openecomp.sdc.be.model.tosca.constraints.GreaterThanConstraint;
30 import org.openecomp.sdc.be.model.tosca.constraints.MinLengthConstraint;
31
32 import java.util.ArrayList;
33 import java.util.Arrays;
34 import java.util.Collections;
35 import java.util.List;
36
37 import static org.assertj.core.api.Assertions.assertThat;
38
39
40 public class PolicyTypeImportUtilsTest {
41
42     private static final String UNIQUE_ID_EXSISTS = "uniqueId";
43
44     @Test
45     public void isPolicyTypesEquals_whenBothTypesAreNull_returnTrue() {
46         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(null, null)).isTrue();
47     }
48
49     @Test
50     public void isPolicyTypesEquals_whenOneTypeIsNull_returnFalse() {
51         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(new PolicyTypeDefinition(), null)).isFalse();
52         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(null, new PolicyTypeDefinition())).isFalse();
53     }
54
55     @Test
56     public void isPolicyTypesEquals_whenTypesIsSameObject_returnTrue() {
57         PolicyTypeDefinition policyType = new PolicyTypeDefinition();
58         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(policyType, policyType)).isTrue();
59     }
60
61     @Test
62     public void isPolicyTypesEquals_allFieldsEquals_returnTrue() {
63         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(createPolicyTypeWithAllFields(), createPolicyTypeWithAllFields())).isTrue();
64     }
65
66     @Test
67     public void isPolicyTypeEquals_whenTypesAreDifferentInANonCompareFields_returnTrue() {
68         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
69         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
70         type2.setOwnerId("ownerIdNew");
71         type2.setModificationTime(System.currentTimeMillis());
72         type2.setCreationTime(System.currentTimeMillis());
73         type2.setUniqueId("uniqueIdNew");
74         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
75     }
76
77     @Test
78     public void isPolicyTypesEquals_whenTypeIsDifferent_returnFalse() {
79         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
80         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
81         type2.setType("newType");
82         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
83     }
84
85     @Test
86     public void whenNameIsDifferent_returnFalse() {
87         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
88         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
89         type2.setName("newName");
90         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
91     }
92
93     @Test
94     public void whenIconIsDifferent_returnFalse() {
95         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
96         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
97         type2.setIcon("newIcon");
98         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
99     }
100
101     @Test
102     public void isPolicyTypesEquals_whenDescriptionIsDifferent_returnFalse() {
103         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
104         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
105         type2.setDescription("newDescription");
106         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
107     }
108
109     @Test
110     public void isPolicyTypesEquals_whenTargetsAreDifferent_returnFalse() {
111         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
112         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
113         type2.setTargets(new ArrayList<>());
114         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
115     }
116
117     @Test
118     public void isPolicyTypesEquals_whenDerivedFromIsDifferent_returnFalse() {
119         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
120         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
121         type2.setDerivedFrom("newDerivedFrom");
122         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
123     }
124
125     @Test
126     public void isPolicyTypesEquals_whenVersionIsDifferent_returnFalse() {
127         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
128         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
129         type2.setVersion("2.0");
130         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
131     }
132
133     @Test
134     public void isPolicyTypesEquals_whenMetadataIsDifferent_returnFalse() {
135         PolicyTypeDefinition type1 = createPolicyTypeWithAllFields();
136         PolicyTypeDefinition type2 = createPolicyTypeWithAllFields();
137         type2.setMetadata(ImmutableMap.of("newKey", "newVal"));
138         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
139     }
140
141     @Test
142     public void whenBothPropertiesListNull_returnTrue() {
143         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals( new PolicyTypeDefinition(),  new PolicyTypeDefinition())).isTrue();
144     }
145
146     @Test
147     public void whenOnePropertiesListIsNullAndSecondOneIsEmpty_returnTrue() {
148         PolicyTypeDefinition noProperties = new PolicyTypeDefinition();
149         PolicyTypeDefinition emptyProperties = new PolicyTypeBuilder().setProperties(Collections.emptyList()).build();
150         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(noProperties, emptyProperties)).isTrue();
151         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(emptyProperties, noProperties)).isTrue();
152     }
153
154     @Test
155     public void isPolicyTypeEquals_whenPropertiesListNotOfSameSize_returnFalse() {
156         PolicyTypeDefinition noProperties = new PolicyTypeDefinition();
157         PolicyTypeDefinition emptyProperties = new PolicyTypeBuilder().setProperties(Collections.emptyList()).build();
158         PolicyTypeDefinition oneProp = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
159         PolicyTypeDefinition twoProps = new PolicyTypeBuilder().setProperties(Arrays.asList(createPropertyDefinitionWithAllFields("prop1"),
160                                                                                             createPropertyDefinitionWithAllFields("prop2")))
161                                                                 .build();
162         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(noProperties, oneProp)).isFalse();
163         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(emptyProperties, oneProp)).isFalse();
164         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(twoProps, oneProp)).isFalse();
165     }
166
167     @Test
168     public void isPolicyTypeEquals_whenPropertiesSamePropertiesList_returnTrue() {
169         List<PropertyDefinition> propList = Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"));
170         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(propList).build();
171         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(propList).build();
172         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
173     }
174
175     @Test
176     public void isPolicyTypeEquals_whenPropertiesListFieldsEquals_returnTrue() {
177         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
178         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
179         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
180     }
181
182     @Test
183     public void isPolicyTypeEquals_whenPropertiesListDifferentInANonComparedFields_returnTrue() {
184         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
185         PropertyDefinition prop1DiffNonComparedFields = createPropertyDefinitionWithAllFields("prop1");
186         prop1DiffNonComparedFields.setOwnerId("newOwner");
187         prop1DiffNonComparedFields.setValue("newVal");
188         prop1DiffNonComparedFields.setConstraints(null);
189         prop1DiffNonComparedFields.setUniqueId("newId");
190         prop1DiffNonComparedFields.setHidden(true);
191
192         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
193         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffNonComparedFields)).build();
194         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isTrue();
195     }
196
197     @Test
198     public void isPolicyTypeEquals_whenPropertiesNotOfSameName_returnFalse() {
199         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop1"))).build();
200         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(createPropertyDefinitionWithAllFields("prop2"))).build();
201         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
202     }
203
204     @Test
205     public void isPolicyTypeEquals_whenPropertiesNotOFSameType_returnFalse() {
206         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
207         PropertyDefinition prop1TypeInteger = createPropertyDefinitionWithAllFields("prop1");
208         prop1TypeInteger.setType("integer");
209
210         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
211         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1TypeInteger)).build();
212         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
213     }
214
215     @Test
216     public void isPolicyTypeEquals_whenPropertiesNotOfSameDefaultVal_returnFalse() {
217         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
218         PropertyDefinition prop1DiffDefault = createPropertyDefinitionWithAllFields("prop1");
219         prop1DiffDefault.setDefaultValue("newDefVal");
220
221         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
222         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffDefault)).build();
223         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
224     }
225
226     @Test
227     public void isPolicyTypeEquals_whenPropertiesNotOfSameSchema_returnFalse() {
228         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
229         PropertyDefinition prop1DiffSchema = createPropertyDefinitionWithAllFields("prop1");
230         prop1DiffSchema.setSchema(null);
231
232         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
233         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffSchema)).build();
234         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
235     }
236
237     @Test
238     public void isPolicyTypeEquals_whenPropertiesIsPasswordFieldNotSame_returnFalse() {
239         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
240         PropertyDefinition prop1DiffIsPassword = createPropertyDefinitionWithAllFields("prop1");
241         prop1DiffIsPassword.setPassword(!prop1.isPassword());
242
243         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
244         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffIsPassword)).build();
245         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
246     }
247
248     @Test
249     public void isPolicyTypeEquals_whenPropertiesIsRequiredFieldNotSame_returnFalse() {
250         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
251         PropertyDefinition prop1DiffIsRequired = createPropertyDefinitionWithAllFields("prop1");
252         prop1DiffIsRequired.setRequired(!prop1.isRequired());
253
254         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
255         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffIsRequired)).build();
256         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
257     }
258
259     @Test
260     public void isPolicyTypeEquals_whenPropertiesNotSameDescription_returnFalse() {
261         PropertyDefinition prop1 = createPropertyDefinitionWithAllFields("prop1");
262         PropertyDefinition prop1DiffDescription = createPropertyDefinitionWithAllFields("prop1");
263         prop1DiffDescription.setDescription("newDescription");
264
265         PolicyTypeDefinition type1 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1)).build();
266         PolicyTypeDefinition type2 = new PolicyTypeBuilder().setProperties(Collections.singletonList(prop1DiffDescription)).build();
267         assertThat(PolicyTypeImportUtils.isPolicyTypesEquals(type1, type2)).isFalse();
268     }
269
270     private PolicyTypeDefinition createPolicyTypeWithAllFields() {
271         return new PolicyTypeBuilder()
272                 .setType("type1")
273                 .setDerivedFrom("derivedFrom")
274                 .setVersion("1.0")
275                 .setDescription("description")
276                 .setUniqueId("id1")
277                 .setHighestVersion(true)
278                 .setModificationTime(System.currentTimeMillis())
279                 .setCreationTime(System.currentTimeMillis())
280                 .setTargets(getTargets())
281                 .setOwner("owner")
282                 .setName("name")
283                 .setIcon("icon")
284                 .setMetadata(ImmutableMap.of("key1", "val1", "key2", "val2"))
285                 .build();
286     }
287
288     private PropertyDefinition createPropertyDefinitionWithAllFields(String name) {
289         return new PropertyDataDefinitionBuilder()
290                 .setConstraints(Arrays.asList(new GreaterThanConstraint("abc"), new MinLengthConstraint(5)))
291                 .setUniqueId("uid")
292                 .setDefaultValue("val1")
293                 .setType("string")
294                 .setValue("val1")
295                 .setName(name)
296                 .setSchemaType("string")
297                 .setOwnerId("owner")
298                 .setStatus("status")
299                 .setDescription("description")
300                 .setIsPassword(false)
301                 .setIsRequired(false)
302                 .build();
303     }
304
305     private List<String> getTargets() {
306
307         return Collections.singletonList(UNIQUE_ID_EXSISTS);
308     }
309 }