re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / tosca / PropertyConvertorTest.java
1 package org.openecomp.sdc.be.tosca;
2
3 import fj.data.Either;
4 import org.junit.Before;
5 import org.junit.Test;
6 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
7 import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
8 import org.openecomp.sdc.be.model.DataTypeDefinition;
9 import org.openecomp.sdc.be.model.PropertyDefinition;
10 import org.openecomp.sdc.be.model.Resource;
11 import org.openecomp.sdc.be.model.tosca.ToscaPropertyType;
12 import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
13 import org.openecomp.sdc.be.tosca.model.ToscaProperty;
14
15 import java.util.*;
16
17 import static org.assertj.core.api.Assertions.assertThat;
18 import static org.junit.Assert.*;
19
20 public class PropertyConvertorTest {
21     private PropertyDefinition property;
22     Map<String, DataTypeDefinition> dataTypes;
23
24     @Before
25     public void setUp(){
26         property = new PropertyDefinition();
27         property.setName("myProperty");
28         property.setType(ToscaPropertyType.INTEGER.getType());
29         dataTypes = new HashMap();
30         dataTypes.put(property.getName(), new DataTypeDefinition());
31     }
32
33     @Test
34     public void testConvertProperty() {
35         SchemaDefinition schema = new SchemaDefinition();
36         schema.setProperty(property);
37         
38         property.setSchema(schema);
39         
40         PropertyConvertor.getInstance().convertProperty(dataTypes, property, true);
41     }
42
43     @Test
44     public void convertPropertyWhenValueAndDefaultNull() {
45         ToscaProperty prop = PropertyConvertor.getInstance().convertProperty(dataTypes, property, false);
46         assertNotNull(prop);
47         assertNull(prop.getDefaultp());
48     }
49
50     @Test
51     public void convertPropertyWhenValueNullAndDefaultNotEmpty() {
52         final String def = "1";
53         property.setDefaultValue(def);
54         ToscaProperty result = PropertyConvertor.getInstance().convertProperty(dataTypes, property, false);
55         assertNotNull(result);
56         assertEquals(Integer.valueOf(def), result.getDefaultp());
57     }
58
59     @Test
60     public void convertPropertiesWhenValueAndDefaultNullInOne() {
61         PropertyDefinition property1 = new PropertyDefinition();
62         property1.setName("otherProperty");
63         property1.setType(ToscaPropertyType.INTEGER.getType());
64         property1.setDefaultValue("2");
65         dataTypes.put(property1.getName(), new DataTypeDefinition());
66         Resource resource = new Resource();
67         List<PropertyDefinition> properties = new ArrayList();
68         properties.add(property);
69         properties.add(property1);
70         resource.setProperties(properties);
71         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
72         assertTrue(result.isLeft());
73         assertEquals(2, result.left().value().getProperties().size());
74         int cnt = 0;
75         for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
76             ToscaProperty prop = it.next();
77             if (prop.getDefaultp() == null) {
78                 cnt++;
79             }
80         }
81         assertEquals(1, cnt);
82     }
83
84     @Test
85     public void convertPropertiesWhenValueAndDefaultExist() {
86         PropertyDefinition property1 = new PropertyDefinition();
87         property1.setName("otherProperty");
88         property1.setType(ToscaPropertyType.INTEGER.getType());
89         property1.setDefaultValue("2");
90         property.setDefaultValue("1");
91         dataTypes.put(property1.getName(), new DataTypeDefinition());
92         Resource resource = new Resource();
93         List<PropertyDefinition> properties = new ArrayList();
94         properties.add(property);
95         properties.add(property1);
96         resource.setProperties(properties);
97         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
98         assertTrue(result.isLeft());
99         assertEquals(2, result.left().value().getProperties().size());
100         for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
101             ToscaProperty prop = it.next();
102             assertNotNull(prop.getDefaultp());
103         }
104     }
105
106     @Test
107     public void convertPropertiesWhenValueAndDefaultNullInAll() {
108         PropertyDefinition property1 = new PropertyDefinition();
109         property1.setName("otherProperty");
110         property1.setType(ToscaPropertyType.INTEGER.getType());
111         dataTypes.put(property1.getName(), new DataTypeDefinition());
112         Resource resource = new Resource();
113         List<PropertyDefinition> properties = new ArrayList();
114         properties.add(property);
115         properties.add(property1);
116         resource.setProperties(properties);
117         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
118         assertTrue(result.isLeft());
119         assertEquals(2, result.left().value().getProperties().size());
120         for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
121             ToscaProperty prop = it.next();
122             assertNull(prop.getDefaultp());
123         }
124      }
125
126     @Test
127     public void convertPropertyWhichStartsWithSemiColon() throws Exception {
128         PropertyDefinition property1 = new PropertyDataDefinitionBuilder()
129                 .setDefaultValue("::")
130                 .setType(ToscaPropertyType.STRING.getType())
131                 .build();
132         ToscaProperty toscaProperty = PropertyConvertor.getInstance().convertProperty(Collections.emptyMap(), property1, false);
133         assertThat(toscaProperty.getDefaultp()).isEqualTo("::");
134     }
135
136     @Test
137     public void convertPropertyWhichStartsWithSlash() throws Exception {
138         PropertyDefinition property1 = new PropertyDataDefinitionBuilder()
139                 .setDefaultValue("/")
140                 .setType(ToscaPropertyType.STRING.getType())
141                 .build();
142         ToscaProperty toscaProperty = PropertyConvertor.getInstance().convertProperty(Collections.emptyMap(), property1, false);
143         assertThat(toscaProperty.getDefaultp()).isEqualTo("/");
144     }
145     
146     @Test
147     public void testConvertToToscaObject() {
148                 dataTypes.put(ToscaPropertyType.Root.getType(), new DataTypeDefinition());
149         
150         PropertyConvertor.getInstance().convertToToscaObject(ToscaPropertyType.Root.getType(), "", "innerType", dataTypes,true);
151     }
152     
153     @Test
154     public void testConvertToToscaObjectWhenPropertyTypeAndInnerTypeNull() {
155         dataTypes.put(ToscaPropertyType.Root.getType(), new DataTypeDefinition());
156         
157         PropertyConvertor.getInstance().convertToToscaObject(null, "value", null, dataTypes,true);
158     }
159     
160     @Test
161     public void testConvertToToscaObjectWhenIsScalarTypeIsNotNull() {
162         DataTypeDefinition def = new DataTypeDefinition();
163         def.setName("integer");
164         dataTypes.put("type", def);
165         
166         PropertyConvertor.getInstance().convertToToscaObject("type", "value", "innerType", dataTypes,true);
167     }
168
169 }