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.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.ArgumentMatchers.any;
27 import static org.mockito.ArgumentMatchers.anyMap;
28 import static org.mockito.ArgumentMatchers.eq;
29 import static org.mockito.ArgumentMatchers.isNull;
30 import static org.mockito.Mockito.when;
32 import java.util.ArrayList;
33 import java.util.List;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.mockito.Mockito;
38 import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
39 import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
40 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
41 import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
42 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
43 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
44 import org.openecomp.sdc.be.model.HeatParameterDefinition;
45 import org.openecomp.sdc.be.model.ModelTestBase;
46 import org.openecomp.sdc.be.model.heat.HeatParameterType;
47 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
48 import org.openecomp.sdc.be.resources.data.HeatParameterData;
49 import org.openecomp.sdc.be.resources.data.HeatParameterValueData;
51 import fj.data.Either;
53 public class HeatParametersOperationTest extends ModelTestBase {
55 HeatParametersOperation heatParametersOperation = new HeatParametersOperation();
57 TitanGenericDao titanGenericDao = Mockito.mock(TitanGenericDao.class);
61 heatParametersOperation.setTitanGenericDao(titanGenericDao);
66 public void addPropertyToResourceTest() {
68 String propName = "myProp";
69 HeatParameterDefinition property = buildHeatPropertyDefinition();
71 HeatParameterData propertyData = new HeatParameterData(property);
73 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
75 GraphRelation graphRelation = new GraphRelation();
76 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
78 when(titanGenericDao.createNode(any(HeatParameterData.class), eq(HeatParameterData.class))).thenReturn(either);
79 when(titanGenericDao.createRelation(any(GraphNode.class), (GraphNode) any(GraphNode.class), eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
81 Either<HeatParameterData, TitanOperationStatus> result = heatParametersOperation.addPropertyToGraph(propName, property, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
83 assertTrue(result.isLeft());
88 public void addPropertyListToResourceTest() {
90 HeatParameterDefinition property = buildHeatPropertyDefinition();
91 HeatParameterDefinition property2 = buildHeatPropertyDefinition();
92 property2.setName("p2");
94 List<HeatParameterDefinition> parameters = new ArrayList<HeatParameterDefinition>();
95 parameters.add(property);
96 parameters.add(property2);
98 HeatParameterData propertyData = new HeatParameterData(property);
100 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
102 GraphRelation graphRelation = new GraphRelation();
103 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
105 when(titanGenericDao.createNode(any(HeatParameterData.class), eq(HeatParameterData.class))).thenReturn(either);
106 when(titanGenericDao.createRelation(any(GraphNode.class), (GraphNode) any(GraphNode.class), eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
108 StorageOperationStatus result = heatParametersOperation.addPropertiesToGraph(parameters, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
110 assertEquals(StorageOperationStatus.OK, result);
115 public void testStringValues() {
116 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.STRING, "50aaa"));
120 public void testNumberValues() {
121 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50"));
122 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50.5"));
123 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "0x11"));
125 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "aaa"));
126 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "?>!"));
130 public void testJsonValues() {
131 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.JSON, "{ \"member\" : \"50\"}"));
132 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.JSON.getType(), "{ \"member\" : \"50\"}");
133 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
134 assertEquals(StorageOperationStatus.OK, operationStatus);
135 assertEquals(HeatParameterType.JSON.getType(), propertyDefinition.getType());
140 public void testListValues() {
141 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.COMMA_DELIMITED_LIST, "one, two"));
142 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.COMMA_DELIMITED_LIST.getType(), "one, two");
143 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
144 assertEquals(StorageOperationStatus.OK, operationStatus);
145 assertEquals(HeatParameterType.COMMA_DELIMITED_LIST.getType(), propertyDefinition.getType());
146 assertEquals("one, two", propertyDefinition.getDefaultValue());
150 public void testBooleanValues() {
152 String[] trueArray = { "true", "t", "1", "on", "y", "yes" };
153 String[] falseArray = { "false", "f", "0", "off", "n", "no" };
155 for (int i = 0; i < trueArray.length; i++) {
156 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
157 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i]);
158 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
159 assertEquals(StorageOperationStatus.OK, operationStatus);
160 assertEquals("true", propertyDefinition.getDefaultValue());
162 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
163 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i].toUpperCase());
164 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
165 assertEquals(StorageOperationStatus.OK, operationStatus);
166 assertEquals("true", propertyDefinition.getDefaultValue());
168 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
169 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i].toLowerCase());
170 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
171 assertEquals(StorageOperationStatus.OK, operationStatus);
172 assertEquals("true", propertyDefinition.getDefaultValue());
175 for (int i = 0; i < falseArray.length; i++) {
176 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
177 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i]);
178 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
179 assertEquals(StorageOperationStatus.OK, operationStatus);
180 assertEquals("false", propertyDefinition.getDefaultValue());
182 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
183 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i].toUpperCase());
184 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
185 assertEquals(StorageOperationStatus.OK, operationStatus);
186 assertEquals("false", propertyDefinition.getDefaultValue());
188 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
189 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i].toLowerCase());
190 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
191 assertEquals(StorageOperationStatus.OK, operationStatus);
192 assertEquals("false", propertyDefinition.getDefaultValue());
195 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "blabla"));
196 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "2"));
199 private HeatParameterDefinition buildHeatPropertyDefinition() {
200 HeatParameterDefinition parameter = new HeatParameterDefinition();
202 parameter.setName("p1");
203 parameter.setType("string");
204 parameter.setDefaultValue("def");
205 parameter.setCurrentValue("current");
206 parameter.setDescription("description");
211 private HeatParameterDefinition buildHeatBooleanPropertyDefinition(String type, String boolValue) {
212 HeatParameterDefinition parameter = new HeatParameterDefinition();
214 parameter.setName("parameter1");
215 parameter.setType(type);
216 parameter.setDefaultValue(boolValue);
217 parameter.setDescription("description");
223 public void addPropertyToResourceInstanceTest() {
225 HeatParameterDefinition property = buildHeatPropertyDefinition();
227 HeatParameterValueData propertyData = new HeatParameterValueData();
228 propertyData.setUniqueId("bla");
229 propertyData.setValue("value1");
231 Either<HeatParameterValueData, TitanOperationStatus> either = Either.left(propertyData);
233 GraphRelation graphRelation = new GraphRelation();
234 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
236 when(titanGenericDao.createNode(any(HeatParameterValueData.class), eq(HeatParameterValueData.class))).thenReturn(either);
237 when(titanGenericDao.createRelation(any(GraphNode.class), any(GraphNode.class), eq(GraphEdgeLabels.PARAMETER_VALUE), anyMap())).thenReturn(relationResult);
238 when(titanGenericDao.createRelation(any(GraphNode.class), any(GraphNode.class), eq(GraphEdgeLabels.PARAMETER_IMPL), isNull())).thenReturn(relationResult);
240 Either<HeatParameterValueData, TitanOperationStatus> result = heatParametersOperation.addHeatValueToGraph(property, "artifactLabel", "resourceInstanceId.artifactId", "resourceInstanceId");
242 assertTrue(result.isLeft());