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))).thenReturn(either);
77 when(titanGenericDao.createRelation((GraphNode) anyObject(), (GraphNode) anyObject(), eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
79 Either<HeatParameterData, TitanOperationStatus> result = heatParametersOperation.addPropertyToGraph(propName, property, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
81 assertTrue(result.isLeft());
86 public void addPropertyListToResourceTest() {
88 HeatParameterDefinition property = buildHeatPropertyDefinition();
89 HeatParameterDefinition property2 = buildHeatPropertyDefinition();
90 property2.setName("p2");
92 List<HeatParameterDefinition> parameters = new ArrayList<HeatParameterDefinition>();
93 parameters.add(property);
94 parameters.add(property2);
96 HeatParameterData propertyData = new HeatParameterData(property);
98 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
100 GraphRelation graphRelation = new GraphRelation();
101 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
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);
106 StorageOperationStatus result = heatParametersOperation.addPropertiesToGraph(parameters, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
108 assertEquals(StorageOperationStatus.OK, result);
113 public void testStringValues() {
114 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.STRING, "50aaa"));
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"));
123 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "aaa"));
124 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "?>!"));
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());
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());
148 public void testBooleanValues() {
150 String[] trueArray = { "true", "t", "1", "on", "y", "yes" };
151 String[] falseArray = { "false", "f", "0", "off", "n", "no" };
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());
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());
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());
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());
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());
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());
193 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
195 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
197 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
199 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
201 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
203 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
205 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
207 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
209 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
211 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
213 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
215 // assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN,
218 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "blabla"));
219 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "2"));
222 private HeatParameterDefinition buildHeatPropertyDefinition() {
223 HeatParameterDefinition parameter = new HeatParameterDefinition();
225 parameter.setName("p1");
226 parameter.setType("string");
227 parameter.setDefaultValue("def");
228 parameter.setCurrentValue("current");
229 parameter.setDescription("description");
234 private HeatParameterDefinition buildHeatBooleanPropertyDefinition(String type, String boolValue) {
235 HeatParameterDefinition parameter = new HeatParameterDefinition();
237 parameter.setName("parameter1");
238 parameter.setType(type);
239 parameter.setDefaultValue(boolValue);
240 parameter.setDescription("description");
246 public void addPropertyToResourceInstanceTest() {
248 HeatParameterDefinition property = buildHeatPropertyDefinition();
250 HeatParameterValueData propertyData = new HeatParameterValueData();
251 propertyData.setUniqueId("bla");
252 propertyData.setValue("value1");
254 Either<HeatParameterValueData, TitanOperationStatus> either = Either.left(propertyData);
256 GraphRelation graphRelation = new GraphRelation();
257 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
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);
263 Either<HeatParameterValueData, TitanOperationStatus> result = heatParametersOperation.addHeatValueToGraph(property, "artifactLabel", "resourceInstanceId.artifactId", "resourceInstanceId");
265 assertTrue(result.isLeft());