Sorted out unit-test libraries in onboarding
[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 = 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 = 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 = 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 = 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 testNovaImageAndFlavorNames() {
77     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
78             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
79             PATH + "heatNovaServerImageAndFlavor/positive");
80     Assert.assertNotNull(messages);
81     Assert.assertEquals(messages.size(), 0);
82
83     messages = ValidationTestUtil.testValidator(baseValidator,
84             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
85             PATH + "heatNovaServerImageAndFlavor/negative");
86     Assert.assertNotNull(messages);
87     Assert.assertEquals(messages.size(), 1);
88     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
89     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
90             "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");
91     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
92             "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");
93   }
94
95   @Test
96   public void testNovaResourceNetworkUniqueRole() {
97     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
98             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
99             PATH + "heatNovaNetworkUniqueRoleConvention/positive/");
100     Assert.assertNotNull(messages);
101     Assert.assertEquals(messages.size(), 0);
102     messages = ValidationTestUtil.testValidator(baseValidator,
103             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
104             PATH + "heatNovaNetworkUniqueRoleConvention/negative/");
105     Assert.assertNotNull(messages);
106     Assert.assertEquals(messages.size(), 1);
107     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
108     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
109             "WARNING: [NNS12]: A resource is connected twice to the same network role, Network Role [FSB2], Resource ID [Internal1]");
110   }
111
112   @Test
113   public void testNovaServerName() {
114     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
115             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
116             PATH + "heatNovaServerNameValidation/positive");
117     Assert.assertNotNull(messages);
118     Assert.assertEquals(messages.size(), 0);
119
120     messages = ValidationTestUtil.testValidator(baseValidator,
121             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
122             PATH + "heatNovaServerNameValidation/negative/");
123     Assert.assertNotNull(messages);
124     Assert.assertEquals(messages.size(), 1);
125     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
126     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
127             "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");
128   }
129
130   @Test
131   public void testVMNameSyncInNova() {
132     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
133             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
134             PATH + "input");
135
136     Assert.assertNotNull(messages);
137     Assert.assertEquals(messages.size(), 1);
138
139     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
140     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
141             "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");
142     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
143             "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");
144     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
145             "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_1]");
146     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
147             "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_2]");
148   }
149
150   @Test
151   public void testAvailabilityZoneName() throws IOException {
152     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
153             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
154             PATH + "availability_zone_name/input");
155
156     Assert.assertNotNull(messages);
157     Assert.assertEquals(messages.size(), 1);
158
159     Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
160     Assert.assertEquals(
161             messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
162             "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");
163     Assert.assertEquals(
164             messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
165             "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");
166   }
167
168   @Test
169   public void testHeatNovaServerVnfIDValidation() {
170     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
171             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
172             "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemissingvnfid/");
173     Assert.assertNotNull(messages);
174     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
175     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
176             "WARNING: [NNS3]: Missing VNF_ID in Metadata property, Resource ID [FSB2]");
177   }
178
179   @Test
180   public void testHeatNovaServerVfModuleValidation() {
181     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
182             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
183             "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemisningvfmodule/");
184     Assert.assertNotNull(messages);
185     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
186             "WARNING: [NNS2]: Missing VF_MODULE_ID in Metadata property, Resource id [FSB2]");
187   }
188
189   @Test
190   public void testMissingParam() {
191     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
192             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
193             PATH + "heatNovaNetworkUniqueRoleConvention/missingportNetwork/");
194     Assert.assertNotNull(messages);
195     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
196     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
197             "WARNING: [NNS4]: Missing get_param in network or network_id, Resource Id [FSB2]");
198     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
199             "WARNING: [NNS6]: Missing get_param in availability_zone, Resource Id [FSB2]");
200     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
201             "WARNING: [NNS7]: Missing get_param in nova server name, Resource Id [FSB2]");
202     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
203             "WARNING: [NNS8]: Missing get_param in flavor, Resource Id [FSB2]");
204   }
205
206   @Test
207   public void testNovaResource() {
208     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
209             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
210             PATH + "heatNovaNetworkUniqueRoleConvention/invalidresource/");
211     Assert.assertNotNull(messages);
212     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
213             "ERROR: [NNS14]: invalid get_resource syntax is in use - 1234 , get_resource function should get the resource id of the referenced resource");
214   }
215
216   @Test
217   public void testEnvFileContent() {
218     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
219             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
220             PATH + "heatNovaNetworkUniqueRoleConvention/input/");
221     Assert.assertNotNull(messages);
222     Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
223             "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");
224   }
225 }