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.validation.impl.validators;
24 import org.openecomp.core.validation.types.MessageContainer;
25 import org.openecomp.sdc.validation.Validator;
26 import org.openecomp.sdc.validation.util.ValidationTestUtil;
27 import org.testng.Assert;
28 import org.testng.annotations.Test;
30 import java.io.IOException;
34 public class HeatValidatorTest {
37 private static final String RESOURCE_PATH = "/org/openecomp/validation/validators/heat_validator";
38 private Validator validator = new HeatValidator();
41 public void testInvalidHeatFormat() {
42 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
43 RESOURCE_PATH + "/invalid_heat_format/negative_test/input");
45 Assert.assertNotNull(messages);
46 Assert.assertEquals(messages.size(), 1);
48 Assert.assertEquals(messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().size(), 1);
50 messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
51 "ERROR: [HOT12]: Invalid HEAT format problem - [Cannot create property=kuku for " +
52 "JavaBean=Resource{type='null', properties=null, metadata=null, depends_on=null, " +
53 "update_policy='null', deletion_policy='null'}\n" + " in 'reader', line 25, column 5:\n" +
54 " kuku: kuku\n" + " ^\n" +
55 "Unable to find property 'kuku' on class: org.openecomp.sdc.heat.datatypes.model." +
56 "Resource\n" + " in 'reader', line 25, column 11:\n" + " kuku: kuku\n" +
61 public void testDependsOn() {
62 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
63 RESOURCE_PATH + "/depends_on_points_to_existing_resource/input");
65 Assert.assertNotNull(messages);
66 Assert.assertEquals(messages.size(), 1);
68 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
70 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
71 "ERROR: [HOT8]: a Missing resource in depend On, Missing Resource ID [resource_not_exist]");
73 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
74 "ERROR: [HOT7]: a Missing resource in depend On, Missing Resource ID [resource_3]");
79 public void testResourcesReferencesExistInHeat() throws IOException {
80 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
81 RESOURCE_PATH + "/resource_references_exist_in_heat/negative_test/input");
83 Assert.assertNotNull(messages);
84 Assert.assertEquals(messages.size(), 1);
86 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
88 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
89 "ERROR: [HOT16]: Referenced resource - not_existing_resource not found");
91 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
92 "ERROR: [HOT13]: invalid get_resource syntax is in use - null , get_resource " +
93 "function should get the resource id of the referenced resource");
98 public void testGetResourceValueIsValid() {
99 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
100 RESOURCE_PATH + "/get_resource_value_valid/negative_test/input");
102 Assert.assertNotNull(messages);
103 Assert.assertEquals(messages.size(), 1);
105 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 3);
107 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
108 "ERROR: [HOT13]: invalid get_resource syntax is in use - [param_1, param_2] , " +
109 "get_resource function should get the resource id of the referenced resource");
111 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
112 "ERROR: [HOT13]: invalid get_resource syntax is in use - {get_param=param_1} , " +
113 "get_resource function should get the resource id of the referenced resource");
115 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(2).getMessage(),
116 "ERROR: [HOT13]: invalid get_resource syntax is in use - null , get_resource " +
117 "function should get the resource id of the referenced resource");
121 public void testTwoResourcesDoesNotHoldSameId() throws IOException {
122 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
123 RESOURCE_PATH + "/two_resources_does_not_hold_same_id/positive_test/input");
124 Assert.assertNotNull(messages);
125 Assert.assertEquals(messages.size(), 0);
129 public void testWithWrongFileExtension(){
130 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
131 RESOURCE_PATH + "/wrongFileExtension");
132 Assert.assertNotNull(messages);
133 Assert.assertEquals(messages.get("single.aad").getErrorMessageList().get(0).getMessage(),
134 "ERROR: [HOT2]: Wrong ENV file extension - single.aad");
135 Assert.assertEquals(messages.get("single.ya").getErrorMessageList().get(0).getMessage(),
136 "ERROR: [HOT6]: Wrong HEAT file extension - single.ya");
140 public void testWithMissingManifestContent(){
141 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
142 RESOURCE_PATH + "/missingManifestContent");
143 Assert.assertNotNull(messages);
144 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(0).getMessage(),
145 "ERROR: [HOT9]: Invalid HEAT format problem - [missing template version]");
146 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(1).getMessage(),
147 "WARNING: [HOT10]: Invalid HEAT format problem - " +
148 "[The heat file does not contain any resources]");
152 public void testWithInvalidHeatContent(){
153 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
154 RESOURCE_PATH + "/invalidHeatContent");
155 Assert.assertNotNull(messages);
156 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(0).getMessage(),
157 "ERROR: [HOT9]: Invalid HEAT format problem - [missing template version]");
158 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(1).getMessage(),
159 "WARNING: [HOT10]: Invalid HEAT format problem - " +
160 "[The heat file does not contain any resources]");
161 Assert.assertEquals(messages.get("mount_iso_script.sh").getErrorMessageList().get(0).
162 getMessage(),"WARNING: [HOT11]: Artifact file is not referenced.");
166 public void negativeTestGetParamPointToExistingParameter() throws IOException {
167 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
168 RESOURCE_PATH + "/get_param_points_to_existing_parameter/negative_test/input");
170 Assert.assertNotNull(messages);
171 Assert.assertEquals(messages.size(), 1);
173 Assert.assertEquals(messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().size(), 1);
175 messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
176 "ERROR: [HOT1]: Referenced parameter - not_existing_param_1 - not found, used in " +
177 "resource [server_pcrf_psm_001]");
181 public void testGetAttrFromNested() throws IOException {
182 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
183 RESOURCE_PATH + "/get_attr_from_nested/negative_test/input");
185 Assert.assertNotNull(messages);
186 Assert.assertEquals(messages.size(), 1);
188 Assert.assertEquals(messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().size(), 1);
190 messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
191 "ERROR: [HOT17]: get_attr attribute not found, Attribute name [nested_output], " +
192 "Resource ID [server_pcrf_psm_001]");
196 public void testDefaultValueAlignWithType() throws IOException {
197 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
198 RESOURCE_PATH + "/default_value_align_with_type/negative_test/input");
200 Assert.assertNotNull(messages);
201 Assert.assertEquals(messages.size(), 1);
203 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 1);
205 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
206 "ERROR: [HOT4]: Parameter - pcrf_pps_image_name_1 default value not align with " +
212 public void testEnvParametersMatchDefinedHeatParameterTypes() throws IOException {
213 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
214 RESOURCE_PATH + "/env_parameters_match_defined_types/negative_test/input");
216 Assert.assertNotNull(messages);
217 Assert.assertEquals(messages.size(), 1);
219 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().size(), 1);
221 messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().get(0).getMessage(),
222 "ERROR: [HOT5]: Parameter env value pcrf_pps_flavor_name not align with type");
227 public void testReferencedArtifactsExist() throws IOException {
228 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
229 RESOURCE_PATH + "/referenced_artifacts_exist/negative_test/input");
231 Assert.assertNotNull(messages);
232 Assert.assertEquals(messages.size(), 1);
234 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 1);
236 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
237 "ERROR: [HOT15]: Missing artifact - nimbus-ethernet");
242 public void testEnvContentIsSubSetOfHeatParameters() throws IOException {
243 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(validator,
244 RESOURCE_PATH + "/env_content_is_subset_of_heat/negative_test/input");
246 Assert.assertNotNull(messages);
247 Assert.assertEquals(messages.size(), 1);
249 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().size(), 1);
251 messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().get(0).getMessage(),
252 "ERROR: [HOT3]: Env file hot-nimbus-pps_v1.0.env includes a parameter not in " +
253 "HEAT - mock_param");
257 public void testGetParamPseudoParameters() {
258 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
259 RESOURCE_PATH + "/pseudo_parameters/input");
261 Assert.assertNotNull(messages);
262 Assert.assertEquals(messages.size(), 0);
266 public void testNoErrorWhenEmptyValueForParameterInEnv() {
267 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
268 RESOURCE_PATH + "/env_empty_value/input");
270 Assert.assertNotNull(messages);
271 Assert.assertEquals(messages.size(), 0);