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 fj.data.Either;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.mockito.Mockito;
27 import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
28 import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
29 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
30 import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
31 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
32 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
33 import org.openecomp.sdc.be.model.HeatParameterDefinition;
34 import org.openecomp.sdc.be.model.ModelTestBase;
35 import org.openecomp.sdc.be.model.heat.HeatParameterType;
36 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
37 import org.openecomp.sdc.be.resources.data.HeatParameterData;
38 import org.openecomp.sdc.be.resources.data.HeatParameterValueData;
40 import java.util.ArrayList;
41 import java.util.List;
43 import static org.junit.Assert.*;
44 import static org.mockito.ArgumentMatchers.*;
45 import static org.mockito.Mockito.when;
47 public class HeatParametersOperationTest extends ModelTestBase {
49 HeatParametersOperation heatParametersOperation = new HeatParametersOperation();
51 TitanGenericDao titanGenericDao = Mockito.mock(TitanGenericDao.class);
55 heatParametersOperation.setTitanGenericDao(titanGenericDao);
60 public void addPropertyToResourceTest() {
62 String propName = "myProp";
63 HeatParameterDefinition property = buildHeatPropertyDefinition();
65 HeatParameterData propertyData = new HeatParameterData(property);
67 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
69 GraphRelation graphRelation = new GraphRelation();
70 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
72 when(titanGenericDao.createNode(any(HeatParameterData.class), eq(HeatParameterData.class))).thenReturn(either);
73 when(titanGenericDao.createRelation(any(GraphNode.class), any(GraphNode.class), eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
75 Either<HeatParameterData, TitanOperationStatus> result = heatParametersOperation.addPropertyToGraph(propName, property, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
77 assertTrue(result.isLeft());
82 public void addPropertyListToResourceTest() {
84 HeatParameterDefinition property = buildHeatPropertyDefinition();
85 HeatParameterDefinition property2 = buildHeatPropertyDefinition();
86 property2.setName("p2");
88 List<HeatParameterDefinition> parameters = new ArrayList<>();
89 parameters.add(property);
90 parameters.add(property2);
92 HeatParameterData propertyData = new HeatParameterData(property);
94 Either<HeatParameterData, TitanOperationStatus> either = Either.left(propertyData);
96 GraphRelation graphRelation = new GraphRelation();
97 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
99 when(titanGenericDao.createNode(any(HeatParameterData.class), eq(HeatParameterData.class))).thenReturn(either);
100 when(titanGenericDao.createRelation(any(GraphNode.class), any(GraphNode.class), eq(GraphEdgeLabels.HEAT_PARAMETER), anyMap())).thenReturn(relationResult);
102 StorageOperationStatus result = heatParametersOperation.addPropertiesToGraph(parameters, "resourceId.artifactId", NodeTypeEnum.ArtifactRef);
104 assertEquals(StorageOperationStatus.OK, result);
109 public void testStringValues() {
110 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.STRING, "50aaa"));
114 public void testNumberValues() {
115 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50"));
116 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "50.5"));
117 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "0x11"));
119 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "aaa"));
120 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.NUMBER, "?>!"));
124 public void testJsonValues() {
125 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.JSON, "{ \"member\" : \"50\"}"));
126 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.JSON.getType(), "{ \"member\" : \"50\"}");
127 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
128 assertEquals(StorageOperationStatus.OK, operationStatus);
129 assertEquals(HeatParameterType.JSON.getType(), propertyDefinition.getType());
134 public void testListValues() {
135 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.COMMA_DELIMITED_LIST, "one, two"));
136 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.COMMA_DELIMITED_LIST.getType(), "one, two");
137 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
138 assertEquals(StorageOperationStatus.OK, operationStatus);
139 assertEquals(HeatParameterType.COMMA_DELIMITED_LIST.getType(), propertyDefinition.getType());
140 assertEquals("one, two", propertyDefinition.getDefaultValue());
144 public void testBooleanValues() {
146 String[] trueArray = { "true", "t", "1", "on", "y", "yes" };
147 String[] falseArray = { "false", "f", "0", "off", "n", "no" };
149 for (int i = 0; i < trueArray.length; i++) {
150 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
151 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i]);
152 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
153 assertEquals(StorageOperationStatus.OK, operationStatus);
154 assertEquals("true", propertyDefinition.getDefaultValue());
156 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, trueArray[i]));
157 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), trueArray[i].toUpperCase());
158 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].toLowerCase());
164 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
165 assertEquals(StorageOperationStatus.OK, operationStatus);
166 assertEquals("true", propertyDefinition.getDefaultValue());
169 for (int i = 0; i < falseArray.length; i++) {
170 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
171 HeatParameterDefinition propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i]);
172 StorageOperationStatus operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
173 assertEquals(StorageOperationStatus.OK, operationStatus);
174 assertEquals("false", propertyDefinition.getDefaultValue());
176 assertTrue(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, falseArray[i]));
177 propertyDefinition = buildHeatBooleanPropertyDefinition(HeatParameterType.BOOLEAN.getType(), falseArray[i].toUpperCase());
178 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].toLowerCase());
184 operationStatus = heatParametersOperation.validateAndUpdateProperty(propertyDefinition);
185 assertEquals(StorageOperationStatus.OK, operationStatus);
186 assertEquals("false", propertyDefinition.getDefaultValue());
189 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "blabla"));
190 assertFalse(heatParametersOperation.isValidValue(HeatParameterType.BOOLEAN, "2"));
193 private HeatParameterDefinition buildHeatPropertyDefinition() {
194 HeatParameterDefinition parameter = new HeatParameterDefinition();
196 parameter.setName("p1");
197 parameter.setType("string");
198 parameter.setDefaultValue("def");
199 parameter.setCurrentValue("current");
200 parameter.setDescription("description");
205 private HeatParameterDefinition buildHeatBooleanPropertyDefinition(String type, String boolValue) {
206 HeatParameterDefinition parameter = new HeatParameterDefinition();
208 parameter.setName("parameter1");
209 parameter.setType(type);
210 parameter.setDefaultValue(boolValue);
211 parameter.setDescription("description");
217 public void addPropertyToResourceInstanceTest() {
219 HeatParameterDefinition property = buildHeatPropertyDefinition();
221 HeatParameterValueData propertyData = new HeatParameterValueData();
222 propertyData.setUniqueId("bla");
223 propertyData.setValue("value1");
225 Either<HeatParameterValueData, TitanOperationStatus> either = Either.left(propertyData);
227 GraphRelation graphRelation = new GraphRelation();
228 Either<GraphRelation, TitanOperationStatus> relationResult = Either.left(graphRelation);
230 when(titanGenericDao.createNode(any(HeatParameterValueData.class), eq(HeatParameterValueData.class))).thenReturn(either);
231 when(titanGenericDao.createRelation(any(GraphNode.class), any(GraphNode.class), eq(GraphEdgeLabels.PARAMETER_VALUE), anyMap())).thenReturn(relationResult);
232 when(titanGenericDao.createRelation(any(GraphNode.class), any(GraphNode.class), eq(GraphEdgeLabels.PARAMETER_IMPL), isNull())).thenReturn(relationResult);
234 Either<HeatParameterValueData, TitanOperationStatus> result = heatParametersOperation.addHeatValueToGraph(property, "artifactLabel", "resourceInstanceId.artifactId", "resourceInstanceId");
236 assertTrue(result.isLeft());