Upgrade Vulnerable Direct Dependencies [snakeyaml]
[sdc.git] / openecomp-be / lib / openecomp-sdc-validation-lib / openecomp-sdc-validation-impl / src / test / java / org / openecomp / sdc / validation / impl / validators / namingconvention / NovaServerNamingConventionGuideLineValidatorTest.java
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.validation.impl.validators.namingconvention;
18
19 import java.io.IOException;
20 import java.util.Map;
21 import org.junit.Assert;
22 import org.junit.Test;
23 import org.openecomp.core.validation.types.MessageContainer;
24 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
25 import org.openecomp.sdc.validation.impl.validators.NamingConventionGuideLineValidator;
26 import org.openecomp.sdc.validation.util.ValidationTestUtil;
27
28 /**
29  * Created by TALIO on 2/28/2017.
30  */
31 public class NovaServerNamingConventionGuideLineValidatorTest {
32
33   NamingConventionGuideLineValidator baseValidator = new NamingConventionGuideLineValidator();
34   NovaServerNamingConventionGuideLineValidator resourceValidator = new
35       NovaServerNamingConventionGuideLineValidator();
36   private static final String PATH = "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/";
37   @Test
38   public void testHeatNovaServerMetaDataValidation() {
39     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
40             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
41             PATH + "heatNovaServerMetaDataValidation/positive/");
42     Assert.assertNotNull(messages);
43     Assert.assertEquals(messages.size(), 0);
44
45     messages = new ValidationTestUtil().testValidator(baseValidator,
46             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
47             PATH + "heatNovaServerMetaDataValidation/negative/");
48     Assert.assertNotNull(messages);
49     Assert.assertEquals(messages.size(), 1);
50     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
51     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
52             "WARNING: [NNS1]: Missing Nova Server Metadata property, Resource ID [FSB2]");
53   }
54
55   @Test
56   public void testNovaServerAvailabilityZoneName() {
57     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
58             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
59             PATH + "heatNovaServerAvailabilityZoneName/positive");
60     Assert.assertNotNull(messages);
61     Assert.assertEquals(messages.size(), 0);
62
63     messages = new ValidationTestUtil().testValidator(baseValidator,
64             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
65             PATH + "heatNovaServerAvailabilityZoneName/negative");
66     Assert.assertNotNull(messages);
67     Assert.assertEquals(messages.size(), 1);
68     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 3);
69     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
70             "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone_a], Resource ID [FSB2]. As a result, VF/VFC Profile may miss this information");
71     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
72             "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone], Resource ID [FSB3]. As a result, VF/VFC Profile may miss this information");
73   }
74
75   @Test
76   public void testNovaImageAndFlavorNamesEmptyProperties() {
77     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
78             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
79             PATH + "heatNovaServerImageAndFlavor/negativeEmptyProperties");
80     Assert.assertNotNull(messages);
81     Assert.assertEquals(1, messages.size());
82     Assert.assertEquals(1, messages.get("first.yaml").getErrorMessageList().size());
83     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
84             "WARNING: [NNS13]: Server 'image' Parameter Name not aligned with Guidelines, Parameter Name [fsb2-image], Resource ID [FSB3]. As a result, VF/VFC Profile may miss this information");
85   }
86
87     @Test
88     public void testNovaImageAndFlavorNames() {
89         Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
90             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
91             PATH + "heatNovaServerImageAndFlavor/positive");
92     Assert.assertNotNull(messages);
93     Assert.assertEquals(messages.size(), 0);
94
95     messages = new ValidationTestUtil().testValidator(baseValidator,
96             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
97             PATH + "heatNovaServerImageAndFlavor/negative");
98     Assert.assertNotNull(messages);
99     Assert.assertEquals(messages.size(), 1);
100     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
101     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
102             "WARNING: [NNS13]: Server 'flavor' Parameter Name not aligned with Guidelines, Parameter Name [fsb2-flavor], Resource ID [FSB2]. As a result, VF/VFC Profile may miss this information");
103     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
104             "WARNING: [NNS13]: Server 'image' Parameter Name not aligned with Guidelines, Parameter Name [fsb2-image], Resource ID [FSB3]. As a result, VF/VFC Profile may miss this information");
105   }
106
107   @Test
108   public void testNovaResourceNetworkUniqueRole() {
109     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
110             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
111             PATH + "heatNovaNetworkUniqueRoleConvention/positive/");
112     Assert.assertNotNull(messages);
113     Assert.assertEquals(messages.size(), 0);
114     messages = new ValidationTestUtil().testValidator(baseValidator,
115             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
116             PATH + "heatNovaNetworkUniqueRoleConvention/negative/");
117     Assert.assertNotNull(messages);
118     Assert.assertEquals(messages.size(), 1);
119     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
120     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
121             "WARNING: [NNS12]: A resource is connected twice to the same network role, Network Role [Internal1], Resource ID [FSB2]");
122   }
123
124   @Test
125   public void testNovaServerName() {
126     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
127             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
128             PATH + "heatNovaServerNameValidation/positive");
129     Assert.assertNotNull(messages);
130     Assert.assertEquals(messages.size(), 0);
131
132     messages = new ValidationTestUtil().testValidator(baseValidator,
133             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
134             PATH + "heatNovaServerNameValidation/negative/");
135     Assert.assertNotNull(messages);
136     Assert.assertEquals(messages.size(), 1);
137     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
138     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
139             "WARNING: [NNS10]: Server 'name' Parameter Name not aligned with Guidelines, Parameter Name [pcrf_pps_server_4], Resource ID [FSB2]. As a result, VF/VFC Profile may miss this information");
140   }
141
142   @Test
143   public void testVMNameSyncInNova() {
144     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
145             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
146             PATH + "input");
147
148     Assert.assertNotNull(messages);
149     Assert.assertEquals(messages.size(), 1);
150
151     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
152     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
153             "WARNING: [NNS10]: Server 'name' Parameter Name not aligned with Guidelines, Parameter Name [CE_server_name], Resource ID [FSB2_legal_2]. As a result, VF/VFC Profile may miss this information");
154     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
155             "WARNING: [NNS13]: Server 'flavor' Parameter Name not aligned with Guidelines, Parameter Name [fsb_flavor_names], Resource ID [FSB2_legal_3]. As a result, VF/VFC Profile may miss this information");
156     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
157             "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_1]");
158     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
159             "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_2]");
160   }
161
162   @Test
163   public void testAvailabilityZoneName() throws IOException {
164     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
165             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
166             PATH + "availability_zone_name/input");
167
168     Assert.assertNotNull(messages);
169     Assert.assertEquals(messages.size(), 1);
170
171     Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
172     Assert.assertEquals(
173             messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
174             "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone_name], Resource ID [availability_zone_illegal_name_1]. As a result, VF/VFC Profile may miss this information");
175     Assert.assertEquals(
176             messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
177             "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone], Resource ID [availability_zone_illegal_name_2]. As a result, VF/VFC Profile may miss this information");
178   }
179
180   @Test
181   public void testHeatNovaServerVnfIDValidation() {
182     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
183             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
184             "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemissingvnfid/");
185     Assert.assertNotNull(messages);
186     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
187     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
188             "WARNING: [NNS3]: Missing VNF_ID in Metadata property, Resource ID [FSB2]");
189   }
190
191   @Test
192   public void testHeatNovaServerVfModuleValidation() {
193     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
194             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
195             "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemisningvfmodule/");
196     Assert.assertNotNull(messages);
197     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
198             "WARNING: [NNS2]: Missing VF_MODULE_ID in Metadata property, Resource id [FSB2]");
199   }
200
201   @Test
202   public void testMissingParam() {
203     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
204             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
205             PATH + "heatNovaNetworkUniqueRoleConvention/missingportNetwork/");
206     Assert.assertNotNull(messages);
207     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
208     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
209             "WARNING: [NNS4]: Missing get_param in network or network_id, Resource Id [FSB2]");
210     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
211             "WARNING: [NNS6]: Missing get_param in availability_zone, Resource Id [FSB2]");
212     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
213             "WARNING: [NNS7]: Missing get_param in nova server name, Resource Id [FSB2]");
214     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
215             "WARNING: [NNS8]: Missing get_param in flavor, Resource Id [FSB2]");
216   }
217
218   @Test
219   public void testNovaResource() {
220     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
221             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
222             PATH + "heatNovaNetworkUniqueRoleConvention/invalidresource/");
223     Assert.assertNotNull(messages);
224     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
225             "ERROR: [NNS14]: invalid get_resource syntax is in use - 1234 , get_resource function should get the resource id of the referenced resource");
226   }
227
228   @Test
229   public void testEnvFileContent() {
230     Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
231             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
232             PATH + "heatNovaNetworkUniqueRoleConvention/input/");
233     Assert.assertNotNull(messages);
234     Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
235             "WARNING: [NNS9]: Server 'Name' Parameter Name not aligned with Guidelines, Parameter Name [{key=value}], Resource ID [server_1]. As a result, VF/VFC Profile may miss this information");
236   }
237 }