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 java.io.IOException;
25 import java.util.List;
27 import org.junit.Assert;
28 import org.junit.Test;
29 import org.openecomp.core.validation.types.MessageContainer;
30 import org.openecomp.sdc.common.errors.Messages;
31 import org.openecomp.sdc.datatypes.error.ErrorMessage;
32 import org.openecomp.sdc.validation.Validator;
33 import org.openecomp.sdc.validation.util.ValidationTestUtil;
36 public class HeatValidatorTest {
39 private static final String RESOURCE_PATH = "/org/openecomp/validation/validators/heat_validator";
40 private Validator validator = new HeatValidator();
43 public void testInvalidHeatFormat() {
44 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
45 RESOURCE_PATH + "/invalid_heat_format/negative_test/input");
47 Assert.assertNotNull(messages);
48 Assert.assertEquals(messages.size(), 1);
50 Assert.assertEquals(messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().size(), 1);
52 messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
53 "ERROR: [HOT12]: Invalid HEAT format problem - [Cannot create property=kuku for " +
54 "JavaBean=Resource{type='null', properties=null, metadata=null, depends_on=null, " +
55 "update_policy='null', deletion_policy='null'}\n" + " in 'reader', line 25, column 5:\n" +
56 " kuku: kuku\n" + " ^\n" +
57 "Unable to find property 'kuku' on class: org.openecomp.sdc.heat.datatypes.model." +
58 "Resource\n" + " in 'reader', line 25, column 11:\n" + " kuku: kuku\n" +
63 public void testDependsOn() {
64 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
65 RESOURCE_PATH + "/depends_on_points_to_existing_resource/input");
67 Assert.assertNotNull(messages);
68 Assert.assertEquals(messages.size(), 1);
70 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
72 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
73 "ERROR: [HOT8]: a Missing resource in depend On, Missing Resource ID [resource_not_exist]");
75 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
76 "ERROR: [HOT7]: a Missing resource in depend On, Missing Resource ID [resource_3]");
81 public void testResourcesReferencesExistInHeat() throws IOException {
82 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
83 RESOURCE_PATH + "/resource_references_exist_in_heat/negative_test/input");
85 Assert.assertNotNull(messages);
86 Assert.assertEquals(messages.size(), 1);
88 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
90 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
91 "ERROR: [HOT16]: Referenced resource - not_existing_resource not found");
93 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
94 "ERROR: [HOT13]: invalid get_resource syntax is in use - null , get_resource " +
95 "function should get the resource id of the referenced resource");
100 public void testGetResourceValueIsValid() {
101 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
102 RESOURCE_PATH + "/get_resource_value_valid/negative_test/input");
104 Assert.assertNotNull(messages);
105 Assert.assertEquals(messages.size(), 1);
107 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 3);
109 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
110 "ERROR: [HOT13]: invalid get_resource syntax is in use - [param_1, param_2] , " +
111 "get_resource function should get the resource id of the referenced resource");
113 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
114 "ERROR: [HOT13]: invalid get_resource syntax is in use - {get_param=param_1} , " +
115 "get_resource function should get the resource id of the referenced resource");
117 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(2).getMessage(),
118 "ERROR: [HOT13]: invalid get_resource syntax is in use - null , get_resource " +
119 "function should get the resource id of the referenced resource");
123 public void testTwoResourcesDoesNotHoldSameId() throws IOException {
124 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
125 RESOURCE_PATH + "/two_resources_does_not_hold_same_id/positive_test/input");
126 Assert.assertNotNull(messages);
127 Assert.assertEquals(messages.size(), 0);
131 public void testWithWrongFileExtension(){
132 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
133 RESOURCE_PATH + "/wrongFileExtension");
134 Assert.assertNotNull(messages);
135 Assert.assertEquals(messages.get("single.aad").getErrorMessageList().get(0).getMessage(),
136 "ERROR: [HOT2]: Wrong ENV file extension - single.aad");
137 Assert.assertEquals(messages.get("single.ya").getErrorMessageList().get(0).getMessage(),
138 "ERROR: [HOT6]: Wrong HEAT file extension - single.ya");
142 public void testWithMissingManifestContent(){
143 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
144 RESOURCE_PATH + "/missingManifestContent");
145 Assert.assertNotNull(messages);
146 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(0).getMessage(),
147 "ERROR: [HOT9]: Invalid HEAT format problem - [missing template version]");
148 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(1).getMessage(),
149 "WARNING: [HOT10]: Invalid HEAT format problem - " +
150 "[The heat file does not contain any resources]");
154 public void testWithInvalidHeatContent(){
155 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
156 RESOURCE_PATH + "/invalidHeatContent");
157 Assert.assertNotNull(messages);
158 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(0).getMessage(),
159 "ERROR: [HOT9]: Invalid HEAT format problem - [missing template version]");
160 Assert.assertEquals(messages.get("single.yaml").getErrorMessageList().get(1).getMessage(),
161 "WARNING: [HOT10]: Invalid HEAT format problem - " +
162 "[The heat file does not contain any resources]");
163 Assert.assertEquals(messages.get("mount_iso_script.sh").getErrorMessageList().get(0).
165 "WARNING: [HOT11]: Artifact file is not referenced.");
169 public void testGeneratedArtifactExistInHeat() throws IOException {
170 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
171 RESOURCE_PATH + "/generated_artifact_exist/negative_test/input");
172 Assert.assertNotNull(messages);
173 Assert.assertEquals(messages.size(), 3);
174 checkGeneratedArtifactMessage(HeatValidator.VENDOR_LICENSE_MODEL_XML, messages);
175 checkGeneratedArtifactMessage(HeatValidator.VF_LICENSE_MODEL_XML, messages);
176 checkGeneratedArtifactMessage(HeatValidator.HEAT_META, messages);
180 private void checkGeneratedArtifactMessage(String fileName, Map<String, MessageContainer> messages) {
181 List<ErrorMessage> errorMessages = messages.get(fileName).getErrorMessageList();
182 Assert.assertEquals(errorMessages.size(), 2);
183 Assert.assertEquals(errorMessages.get(0).getMessage(),
184 "WARNING: [HOT11]: Artifact file is not referenced.");
185 String message = String.format(Messages.GENERATED_ARTIFACT_IN_USE.getErrorMessage(), fileName);
186 Assert.assertTrue(errorMessages.get(1).getMessage().contains(message));
190 public void negativeTestGetParamPointToExistingParameter() throws IOException {
191 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(new HeatValidator(),
192 RESOURCE_PATH + "/get_param_points_to_existing_parameter/negative_test/input");
194 Assert.assertNotNull(messages);
195 Assert.assertEquals(messages.size(), 1);
197 Assert.assertEquals(messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().size(), 1);
199 messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
200 "ERROR: [HOT1]: Referenced parameter - not_existing_param_1 - not found, used in " +
201 "resource [server_pcrf_psm_001]");
205 public void testGetAttrFromNested() throws IOException {
206 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
207 RESOURCE_PATH + "/get_attr_from_nested/negative_test/input");
209 Assert.assertNotNull(messages);
210 Assert.assertEquals(messages.size(), 1);
212 Assert.assertEquals(messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().size(), 1);
214 messages.get("hot-nimbus-psm_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
215 "ERROR: [HOT17]: get_attr attribute not found, Attribute name [nested_output], " +
216 "Resource ID [server_pcrf_psm_001]");
220 public void testDefaultValueAlignWithType() throws IOException {
221 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
222 RESOURCE_PATH + "/default_value_align_with_type/negative_test/input");
224 Assert.assertNotNull(messages);
225 Assert.assertEquals(messages.size(), 1);
227 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 1);
229 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
230 "ERROR: [HOT4]: Parameter - pcrf_pps_image_name_1 default value not align with " +
236 public void testEnvParametersMatchDefinedHeatParameterTypes() throws IOException {
237 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
238 RESOURCE_PATH + "/env_parameters_match_defined_types/negative_test/input");
240 Assert.assertNotNull(messages);
241 Assert.assertEquals(messages.size(), 1);
243 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().size(), 1);
245 messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().get(0).getMessage(),
246 "ERROR: [HOT5]: Parameter env value pcrf_pps_flavor_name not align with type");
251 public void testReferencedArtifactsExist() throws IOException {
252 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
253 RESOURCE_PATH + "/referenced_artifacts_exist/negative_test/input");
255 Assert.assertNotNull(messages);
256 Assert.assertEquals(messages.size(), 1);
258 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 1);
260 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
261 "ERROR: [HOT15]: Missing artifact - nimbus-ethernet");
266 public void testEnvContentIsSubSetOfHeatParameters() throws IOException {
267 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(validator,
268 RESOURCE_PATH + "/env_content_is_subset_of_heat/negative_test/input");
270 Assert.assertNotNull(messages);
271 Assert.assertEquals(messages.size(), 1);
273 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().size(), 1);
275 messages.get("hot-nimbus-pps_v1.0.env").getErrorMessageList().get(0).getMessage(),
276 "ERROR: [HOT3]: Env file hot-nimbus-pps_v1.0.env includes a parameter not in " +
277 "HEAT - mock_param");
281 public void testGetParamPseudoParameters() {
282 Map<String, MessageContainer> messages =ValidationTestUtil.testValidator(new HeatValidator(),
283 RESOURCE_PATH + "/pseudo_parameters/input");
285 Assert.assertNotNull(messages);
286 Assert.assertEquals(messages.size(), 0);
290 public void testNoErrorWhenEmptyValueForParameterInEnv() {
291 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
292 RESOURCE_PATH + "/env_empty_value/input");
294 Assert.assertNotNull(messages);
295 Assert.assertEquals(messages.size(), 0);