a71f97871f921909181542298cd3b39c7d548670
[sdc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 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.model.operations.impl;
22
23 import static org.junit.Assert.*;
24 import static org.mockito.Matchers.anyMap;
25 import static org.mockito.Matchers.anyObject;
26 import static org.mockito.Matchers.eq;
27 import static org.mockito.Mockito.when;
28
29 import java.util.ArrayList;
30 import java.util.List;
31
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.mockito.Mockito;
35 import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
36 import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
37 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
38 import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
39 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
40 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
41 import org.openecomp.sdc.be.model.HeatParameterDefinition;
42 import org.openecomp.sdc.be.model.ModelTestBase;
43 import org.openecomp.sdc.be.model.heat.HeatParameterType;
44 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
45 import org.openecomp.sdc.be.model.operations.impl.HeatParametersOperation;
46 import org.openecomp.sdc.be.resources.data.HeatParameterData;
47 import org.openecomp.sdc.be.resources.data.HeatParameterValueData;
48
49 import fj.data.Either;
50
51 public class HeatParametersOperationTest extends ModelTestBase {
52
53         HeatParametersOperation heatParametersOperation = new HeatParametersOperation();
54
55         TitanGenericDao titanGenericDao = Mockito.mock(TitanGenericDao.class);
56
57         @Before
58         public void setup() {
59                 heatParametersOperation.setTitanGenericDao(titanGenericDao);
60
61         }
62
63         @Test
64         public void addPropertyToResourceTest() {
65
66                 String propName = "myProp";
67                 HeatParameterDefinition property = buildHeatPropertyDefinition();
68
69                 HeatParameterData propertyData = new HeatParameterData(property);
70
71                 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
72
73                 GraphRelation graphRelation = new GraphRelation();
74                 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
75
76                 when(titanGenericDao.createNode((HeatParameterData) anyObject(), eq(HeatParameterData.class))).thenReturn(either);
77                 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(), eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
78
79                 Either<HeatParameterData, TitanOperationStatus> result = heatParametersOperation.addPropertyToGraph(propName, property, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
80
81                 assertTrue(result.isLeft());
82
83         }
84
85         @Test
86         public void addPropertyListToResourceTest() {
87
88                 HeatParameterDefinition property = buildHeatPropertyDefinition();
89                 HeatParameterDefinition property2 = buildHeatPropertyDefinition();
90                 property2.setName("p2");
91
92                 List<HeatParameterDefinition> parameters = new ArrayList<HeatParameterDefinition>();
93                 parameters.add(property);
94                 parameters.add(property2);
95
96                 HeatParameterData propertyData = new HeatParameterData(property);
97
98                 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
99
100                 GraphRelation graphRelation = new GraphRelation();
101                 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
102
103                 when(titanGenericDao.createNode((HeatParameterData) anyObject(), eq(HeatParameterData.class))).thenReturn(either);
104                 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(), eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
105
106                 StorageOperationStatus result = heatParametersOperation.addPropertiesToGraph(parameters, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
107
108                 assertEquals(StorageOperationStatus.OK, result);
109
110         }
111
112         @Test
113         public void testStringValues() {
114                 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.STRING, "50aaa"));
115         }
116
117         @Test
118         public void testNumberValues() {
119                 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50"));
120                 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50.5"));
121                 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "0x11"));
122
123                 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "aaa"));
124                 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "?>!"));
125         }
126
127         @Test
128         public void testJsonValues() {
129                 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.JSON, "{ \"member\" : \"50\"}"));
130                 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.JSON.getType(), "{ \"member\" : \"50\"}");
131                 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
132                 assertEquals(StorageOperationStatus.OK, operationStatus);
133                 assertEquals(HeatParameterType.JSON.getType(), propertyDefinition.getType());
134
135         }
136
137         @Test
138         public void testListValues() {
139                 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.COMMA_DELIMITED_LIST, "one, two"));
140                 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.COMMA_DELIMITED_LIST.getType(), "one, two");
141                 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
142                 assertEquals(StorageOperationStatus.OK, operationStatus);
143                 assertEquals(HeatParameterType.COMMA_DELIMITED_LIST.getType(), propertyDefinition.getType());
144                 assertEquals("one, two", propertyDefinition.getDefaultValue());
145         }
146
147         @Test
148         public void testBooleanValues() {
149
150                 String[] trueArray = { "true", "t", "1", "on", "y", "yes" };
151                 String[] falseArray = { "false", "f", "0", "off", "n", "no" };
152
153                 for (int i = 0; i < trueArray.length; i++) {
154                         assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
155                         HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i]);
156                         StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
157                         assertEquals(StorageOperationStatus.OK, operationStatus);
158                         assertEquals("true", propertyDefinition.getDefaultValue());
159
160                         assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
161                         propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i].toUpperCase());
162                         operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
163                         assertEquals(StorageOperationStatus.OK, operationStatus);
164                         assertEquals("true", propertyDefinition.getDefaultValue());
165
166                         assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
167                         propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i].toLowerCase());
168                         operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
169                         assertEquals(StorageOperationStatus.OK, operationStatus);
170                         assertEquals("true", propertyDefinition.getDefaultValue());
171                 }
172
173                 for (int i = 0; i < falseArray.length; i++) {
174                         assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
175                         HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i]);
176                         StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
177                         assertEquals(StorageOperationStatus.OK, operationStatus);
178                         assertEquals("false", propertyDefinition.getDefaultValue());
179
180                         assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
181                         propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i].toUpperCase());
182                         operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
183                         assertEquals(StorageOperationStatus.OK, operationStatus);
184                         assertEquals("false", propertyDefinition.getDefaultValue());
185
186                         assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
187                         propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i].toLowerCase());
188                         operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
189                         assertEquals(StorageOperationStatus.OK, operationStatus);
190                         assertEquals("false", propertyDefinition.getDefaultValue());
191                 }
192
193                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
194                 // "true"));
195                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
196                 // "t"));
197                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
198                 // "1"));
199                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
200                 // "on"));
201                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
202                 // "y"));
203                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
204                 // "yes"));
205                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
206                 // "false"));
207                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
208                 // "f"));
209                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
210                 // "0"));
211                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
212                 // "off"));
213                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
214                 // "n"));
215                 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
216                 // "no"));
217
218                 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "blabla"));
219                 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "2"));
220         }
221
222         private HeatParameterDefinition buildHeatPropertyDefinition() {
223                 HeatParameterDefinition parameter = new HeatParameterDefinition();
224
225                 parameter.setName("p1");
226                 parameter.setType("string");
227                 parameter.setDefaultValue("def");
228                 parameter.setCurrentValue("current");
229                 parameter.setDescription("description");
230
231                 return parameter;
232         }
233
234         private HeatParameterDefinition buildHeatBooleanPropertyDefinition(String type, String boolValue) {
235                 HeatParameterDefinition parameter = new HeatParameterDefinition();
236
237                 parameter.setName("parameter1");
238                 parameter.setType(type);
239                 parameter.setDefaultValue(boolValue);
240                 parameter.setDescription("description");
241
242                 return parameter;
243         }
244
245         @Test
246         public void addPropertyToResourceInstanceTest() {
247
248                 HeatParameterDefinition property = buildHeatPropertyDefinition();
249
250                 HeatParameterValueData propertyData = new HeatParameterValueData();
251                 propertyData.setUniqueId("bla");
252                 propertyData.setValue("value1");
253
254                 Either<HeatParameterValueData, TitanOperationStatus> either = Either.left(propertyData);
255
256                 GraphRelation graphRelation = new GraphRelation();
257                 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
258
259                 when(titanGenericDao.createNode((HeatParameterValueData) anyObject(), eq(HeatParameterValueData.class))).thenReturn(either);
260                 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(), eq(GraphEdgeLabels.PARAMETER_VALUE), anyMap())).thenReturn(relationResult);
261                 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(), eq(GraphEdgeLabels.PARAMETER_IMPL), anyMap())).thenReturn(relationResult);
262
263                 Either<HeatParameterValueData, TitanOperationStatus> result = heatParametersOperation.addHeatValueToGraph(property, "artifactLabel", "resourceInstanceId.artifactId", "resourceInstanceId");
264
265                 assertTrue(result.isLeft());
266
267         }
268
269 }