2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.model.operations.impl;
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;
29 import java.util.ArrayList;
30 import java.util.List;
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;
49 import fj.data.Either;
51 public class HeatParametersOperationTest extends ModelTestBase {
53 HeatParametersOperation heatParametersOperation = new HeatParametersOperation();
55 TitanGenericDao titanGenericDao = Mockito.mock(TitanGenericDao.class);
59 heatParametersOperation.setTitanGenericDao(titanGenericDao);
64 public void addPropertyToResourceTest() {
66 String propName = "myProp";
67 HeatParameterDefinition property = buildHeatPropertyDefinition();
69 HeatParameterData propertyData = new HeatParameterData(property);
71 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
73 GraphRelation graphRelation = new GraphRelation();
74 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
76 when(titanGenericDao.createNode((HeatParameterData) anyObject(), eq(HeatParameterData.class)))
78 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(),
79 eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
81 Either<HeatParameterData, TitanOperationStatus> result = heatParametersOperation.addPropertyToGraph(propName,
82 property, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
84 assertTrue(result.isLeft());
89 public void addPropertyListToResourceTest() {
91 HeatParameterDefinition property = buildHeatPropertyDefinition();
92 HeatParameterDefinition property2 = buildHeatPropertyDefinition();
93 property2.setName("p2");
95 List<HeatParameterDefinition> parameters = new ArrayList<HeatParameterDefinition>();
96 parameters.add(property);
97 parameters.add(property2);
99 HeatParameterData propertyData = new HeatParameterData(property);
101 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
103 GraphRelation graphRelation = new GraphRelation();
104 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
106 when(titanGenericDao.createNode((HeatParameterData) anyObject(), eq(HeatParameterData.class)))
108 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(),
109 eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
111 StorageOperationStatus result = heatParametersOperation.addPropertiesToGraph(parameters,
112 "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
114 assertEquals(StorageOperationStatus.OK, result);
119 public void testStringValues() {
120 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.STRING, "50aaa"));
124 public void testNumberValues() {
125 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50"));
126 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50.5"));
127 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "0x11"));
129 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "aaa"));
130 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "?>!"));
134 public void testJsonValues() {
135 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.JSON, "{ \"member\" : \"50\"}"));
136 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(
137 HeatParameterType.JSON.getType(), "{ \"member\" : \"50\"}");
138 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
139 assertEquals(StorageOperationStatus.OK, operationStatus);
140 assertEquals(HeatParameterType.JSON.getType(), propertyDefinition.getType());
145 public void testListValues() {
146 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.COMMA_DELIMITED_LIST, "one, two"));
147 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(
148 HeatParameterType.COMMA_DELIMITED_LIST.getType(), "one, two");
149 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
150 assertEquals(StorageOperationStatus.OK, operationStatus);
151 assertEquals(HeatParameterType.COMMA_DELIMITED_LIST.getType(), propertyDefinition.getType());
152 assertEquals("one, two", propertyDefinition.getDefaultValue());
156 public void testBooleanValues() {
158 String[] trueArray = { "true", "t", "1", "on", "y", "yes" };
159 String[] falseArray = { "false", "f", "0", "off", "n", "no" };
161 for (int i = 0; i < trueArray.length; i++) {
162 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
163 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(
164 HeatParameterType.BOOLEAN.getType(), trueArray[i]);
165 StorageOperationStatus operationStatus = heatParametersOperation
166 .validateAndUpdateProperty(propertyDefinition);
167 assertEquals(StorageOperationStatus.OK, operationStatus);
168 assertEquals("true", propertyDefinition.getDefaultValue());
170 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
171 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(),
172 trueArray[i].toUpperCase());
173 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
174 assertEquals(StorageOperationStatus.OK, operationStatus);
175 assertEquals("true", propertyDefinition.getDefaultValue());
177 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
178 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(),
179 trueArray[i].toLowerCase());
180 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
181 assertEquals(StorageOperationStatus.OK, operationStatus);
182 assertEquals("true", propertyDefinition.getDefaultValue());
185 for (int i = 0; i < falseArray.length; i++) {
186 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
187 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(
188 HeatParameterType.BOOLEAN.getType(), falseArray[i]);
189 StorageOperationStatus operationStatus = heatParametersOperation
190 .validateAndUpdateProperty(propertyDefinition);
191 assertEquals(StorageOperationStatus.OK, operationStatus);
192 assertEquals("false", propertyDefinition.getDefaultValue());
194 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
195 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(),
196 falseArray[i].toUpperCase());
197 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
198 assertEquals(StorageOperationStatus.OK, operationStatus);
199 assertEquals("false", propertyDefinition.getDefaultValue());
201 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
202 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(),
203 falseArray[i].toLowerCase());
204 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
205 assertEquals(StorageOperationStatus.OK, operationStatus);
206 assertEquals("false", propertyDefinition.getDefaultValue());
209 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
211 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
213 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
215 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
217 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
219 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
221 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
223 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
225 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
227 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
229 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
231 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
234 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "blabla"));
235 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "2"));
238 private HeatParameterDefinition buildHeatPropertyDefinition() {
239 HeatParameterDefinition parameter = new HeatParameterDefinition();
241 parameter.setName("p1");
242 parameter.setType("string");
243 parameter.setDefaultValue("def");
244 parameter.setCurrentValue("current");
245 parameter.setDescription("description");
250 private HeatParameterDefinition buildHeatBooleanPropertyDefinition(String type, String boolValue) {
251 HeatParameterDefinition parameter = new HeatParameterDefinition();
253 parameter.setName("parameter1");
254 parameter.setType(type);
255 parameter.setDefaultValue(boolValue);
256 parameter.setDescription("description");
262 public void addPropertyToResourceInstanceTest() {
264 HeatParameterDefinition property = buildHeatPropertyDefinition();
266 HeatParameterValueData propertyData = new HeatParameterValueData();
267 propertyData.setUniqueId("bla");
268 propertyData.setValue("value1");
270 Either<HeatParameterValueData, TitanOperationStatus> either = Either.left(propertyData);
272 GraphRelation graphRelation = new GraphRelation();
273 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
275 when(titanGenericDao.createNode((HeatParameterValueData) anyObject(), eq(HeatParameterValueData.class)))
277 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(),
278 eq(GraphEdgeLabels.PARAMETER_VALUE), anyMap())).thenReturn(relationResult);
279 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(),
280 eq(GraphEdgeLabels.PARAMETER_IMPL), anyMap())).thenReturn(relationResult);
282 Either<HeatParameterValueData, TitanOperationStatus> result = heatParametersOperation
283 .addHeatValueToGraph(property, "artifactLabel", "resourceInstanceId.artifactId", "resourceInstanceId");
285 assertTrue(result.isLeft());