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.onap.so.apihandlerinfra.validation;
23 import java.io.IOException;
24 import java.nio.file.Files;
25 import java.nio.file.Paths;
27 import org.junit.Rule;
28 import org.junit.Test;
29 import org.junit.rules.ExpectedException;
30 import org.onap.so.apihandlerinfra.Action;
31 import org.onap.so.exceptions.ValidationException;
32 import org.onap.so.serviceinstancebeans.Service;
33 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
34 import com.fasterxml.jackson.databind.ObjectMapper;
35 import org.onap.so.serviceinstancebeans.VfModules;
37 public class UserParamsValidationTest {
39 UserParamsValidation validation = new UserParamsValidation();
42 public ExpectedException thrown = ExpectedException.none();
44 public ValidationInformation setupValidationInformation(String path) throws IOException {
45 String jsonInput = new String(Files.readAllBytes(Paths.get(path)));
46 ObjectMapper mapper = new ObjectMapper();
47 ServiceInstancesRequest sir = mapper.readValue(jsonInput, ServiceInstancesRequest.class);
48 ValidationInformation info = new ValidationInformation(sir, null, Action.createInstance, 7, false,
49 sir.getRequestDetails().getRequestParameters());
50 for (Map<String, Object> params : sir.getRequestDetails().getRequestParameters().getUserParams()) {
51 ObjectMapper obj = new ObjectMapper();
52 String input = obj.writeValueAsString(params.get("service"));
53 Service validate = obj.readValue(input, Service.class);
54 info.setUserParams(validate);
57 info.setRequestInfo(sir.getRequestDetails().getRequestInfo());
62 public void validateModelTypeExceptionTest() throws IOException, ValidationException {
63 thrown.expect(ValidationException.class);
64 thrown.expectMessage("No valid modelType in userParams service modelInfo is specified");
65 validation.validate(setupValidationInformation(
66 "src/test/resources/Validation/UserParamsValidation/ModelInfoNoModelType.json"));
70 public void validateDuplicateInstanceNameDifferentCustomizationIdVnfTest() throws IOException, ValidationException {
71 thrown.expect(ValidationException.class);
73 "No valid instanceName: same instanceName but different modelCustomizationId (instanceName should be unique) in userParams vnf resources is specified");
74 ValidationInformation info = setupValidationInformation(
75 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
76 info.getUserParams().getResources().getVnfs().get(0).setInstanceName("UbuntuVNF2");
77 validation.validate(info);
81 public void validateDuplicateInstanceNameSameCustomizationIdVnfTest() throws IOException, ValidationException {
82 thrown.expect(ValidationException.class);
84 "No valid instanceName: same instanceName with same modelCustomizationId in userParams vnf resources is specified");
85 ValidationInformation info = setupValidationInformation(
86 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
87 info.getUserParams().getResources().getVnfs().get(2).setInstanceName("UbuntuVNF2");
88 validation.validate(info);
92 public void validateNullInstanceNameSameCustomizationIdVnfTest() throws IOException, ValidationException {
93 thrown.expect(ValidationException.class);
95 "No valid instanceName: instanceName is missing or empty with same modelCustomizationId in userParams vnf resources is specified");
96 ValidationInformation info = setupValidationInformation(
97 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
98 info.getUserParams().getResources().getVnfs().get(1).setInstanceName(null);
99 validation.validate(info);
103 public void validateDuplicateNullInstanceNameSameCustomizationIdVnfTest() throws IOException, ValidationException {
104 thrown.expect(ValidationException.class);
105 thrown.expectMessage(
106 "No valid instanceName: same instanceName with same modelCustomizationId in userParams vnf resources is specified");
107 ValidationInformation info = setupValidationInformation(
108 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
109 info.getUserParams().getResources().getVnfs().get(1).setInstanceName(null);
110 info.getUserParams().getResources().getVnfs().get(2).setInstanceName(null);
111 validation.validate(info);
115 public void validateDifferentInstanceNameSameCustomizationIdVnfTest() throws IOException, ValidationException {
116 ValidationInformation info = setupValidationInformation(
117 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
118 validation.validate(info);
122 public void validateNullInstanceNameDifferentCustomizationIdVnfTest() throws IOException, ValidationException {
123 ValidationInformation info = setupValidationInformation(
124 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
125 info.getUserParams().getResources().getVnfs().get(0).setInstanceName(null);
126 validation.validate(info);
130 public void validateDuplicateInstanceNameDifferentCustomizationIdVfModuleInOneVnfTest()
131 throws IOException, ValidationException {
132 thrown.expect(ValidationException.class);
133 thrown.expectMessage(
134 "No valid instanceName: same instanceName but different modelCustomizationId (instanceName should be unique) in userParams vfModule resources is specified");
135 ValidationInformation info = setupValidationInformation(
136 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
137 info.getUserParams().getResources().getVnfs().get(2).getVfModules().get(2).setInstanceName("lcm-demo-ubuntu-3");
138 validation.validate(info);
142 public void validateDuplicateInstanceNameDifferentCustomizationIdVfModuleInMultipleVnfTest()
143 throws IOException, ValidationException {
144 thrown.expect(ValidationException.class);
145 thrown.expectMessage(
146 "No valid instanceName: same instanceName but different modelCustomizationId (instanceName should be unique) in userParams vfModule resources is specified");
147 ValidationInformation info = setupValidationInformation(
148 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
149 info.getUserParams().getResources().getVnfs().get(0).getVfModules().get(0).setInstanceName("lcm-demo-ubuntu-3");
150 validation.validate(info);
154 public void validateDuplicateInstanceNameSameCustomizationIdVfModuleInOneVnfTest()
155 throws IOException, ValidationException {
156 thrown.expect(ValidationException.class);
157 thrown.expectMessage(
158 "No valid instanceName: same instanceName with same modelCustomizationId in userParams vfModule resources is specified");
159 ValidationInformation info = setupValidationInformation(
160 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
161 info.getUserParams().getResources().getVnfs().get(2).getVfModules().get(1).setInstanceName("lcm-demo-ubuntu-2");
162 validation.validate(info);
166 public void validateDuplicateInstanceNameSameCustomizationIdVfModuleInMultipleVnfTest()
167 throws IOException, ValidationException {
168 thrown.expect(ValidationException.class);
169 thrown.expectMessage(
170 "No valid instanceName: same instanceName with same modelCustomizationId in userParams vfModule resources is specified");
171 ValidationInformation info = setupValidationInformation(
172 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
173 VfModules vfModule1 = info.getUserParams().getResources().getVnfs().get(0).getVfModules().get(0);
174 VfModules vfModule2 = info.getUserParams().getResources().getVnfs().get(1).getVfModules().get(0);
175 vfModule2.setInstanceName(vfModule1.getInstanceName());
176 vfModule2.getModelInfo().setModelCustomizationId(vfModule1.getModelInfo().getModelCustomizationId());
177 validation.validate(info);
181 public void validateNullInstanceNameSameCustomizationIdVfModuleInOneVnfTest()
182 throws IOException, ValidationException {
183 thrown.expect(ValidationException.class);
184 thrown.expectMessage(
185 "No valid instanceName: instanceName is missing or empty with same modelCustomizationId in userParams vfModule resources is specified");
186 ValidationInformation info = setupValidationInformation(
187 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
188 info.getUserParams().getResources().getVnfs().get(2).getVfModules().get(1).setInstanceName(null);
189 validation.validate(info);
193 public void validateNullInstanceNameSameCustomizationIdVfModuleInMultipleVnfTest()
194 throws IOException, ValidationException {
195 thrown.expect(ValidationException.class);
196 thrown.expectMessage(
197 "No valid instanceName: instanceName is missing or empty with same modelCustomizationId in userParams vfModule resources is specified");
198 ValidationInformation info = setupValidationInformation(
199 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
200 VfModules vfModule1 = info.getUserParams().getResources().getVnfs().get(0).getVfModules().get(0);
201 VfModules vfModule2 = info.getUserParams().getResources().getVnfs().get(1).getVfModules().get(0);
202 vfModule2.setInstanceName(null);
203 vfModule2.getModelInfo().setModelCustomizationId(vfModule1.getModelInfo().getModelCustomizationId());
204 validation.validate(info);
208 public void validateDuplicateNullInstanceNameSameCustomizationIdVfModuleInMultipleVnfTest()
209 throws IOException, ValidationException {
210 thrown.expect(ValidationException.class);
211 thrown.expectMessage(
212 "No valid instanceName: same instanceName with same modelCustomizationId in userParams vfModule resources is specified");
213 ValidationInformation info = setupValidationInformation(
214 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
215 VfModules vfModule1 = info.getUserParams().getResources().getVnfs().get(0).getVfModules().get(0);
216 VfModules vfModule2 = info.getUserParams().getResources().getVnfs().get(1).getVfModules().get(0);
217 vfModule1.setInstanceName(null);
218 vfModule2.setInstanceName(null);
219 vfModule2.getModelInfo().setModelCustomizationId(vfModule1.getModelInfo().getModelCustomizationId());
220 validation.validate(info);
224 public void validateInstanceNameSameCustomizationIdVfModuleInVnfTest() throws IOException, ValidationException {
225 ValidationInformation info = setupValidationInformation(
226 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
227 VfModules vfModule1 = info.getUserParams().getResources().getVnfs().get(0).getVfModules().get(0);
228 VfModules vfModule2 = info.getUserParams().getResources().getVnfs().get(1).getVfModules().get(0);
229 vfModule2.getModelInfo().setModelCustomizationId(vfModule1.getModelInfo().getModelCustomizationId());
230 validation.validate(info);
234 public void validateNullInstanceNameDifferentCustomizationIdVfModuleInVnfTest()
235 throws IOException, ValidationException {
236 ValidationInformation info = setupValidationInformation(
237 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNames.json");
238 VfModules vfModule1 = info.getUserParams().getResources().getVnfs().get(0).getVfModules().get(0);
239 vfModule1.setInstanceName(null);
240 VfModules vfModule2 = info.getUserParams().getResources().getVnfs().get(2).getVfModules().get(2);
241 vfModule2.setInstanceName(null);
242 validation.validate(info);
246 public void validateDuplicateInstanceNameDifferentCustomizationIdPnfTest() throws IOException, ValidationException {
247 thrown.expect(ValidationException.class);
248 thrown.expectMessage(
249 "No valid instanceName: same instanceName but different modelCustomizationId (instanceName should be unique) in userParams pnf resources is specified");
250 ValidationInformation info = setupValidationInformation(
251 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
252 info.getUserParams().getResources().getPnfs().get(0).setInstanceName("ORAN_SIM1_2106_pnf_01");
253 validation.validate(info);
257 public void validateDuplicateInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
258 thrown.expect(ValidationException.class);
259 thrown.expectMessage(
260 "No valid instanceName: same instanceName with same modelCustomizationId in userParams pnf resources is specified");
261 ValidationInformation info = setupValidationInformation(
262 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
263 info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
264 .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
265 info.getUserParams().getResources().getPnfs().get(1).setInstanceName("ORAN_SIM1_2106_pnf_01");
266 validation.validate(info);
270 public void validateNullInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
271 thrown.expect(ValidationException.class);
272 thrown.expectMessage(
273 "No valid instanceName: instanceName is missing or empty with same modelCustomizationId in userParams pnf resources is specified");
274 ValidationInformation info = setupValidationInformation(
275 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
276 info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
277 .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
278 info.getUserParams().getResources().getPnfs().get(1).setInstanceName(null);
279 validation.validate(info);
283 public void validateDuplicateNullInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
284 thrown.expect(ValidationException.class);
285 thrown.expectMessage(
286 "No valid instanceName: same instanceName with same modelCustomizationId in userParams pnf resources is specified");
287 ValidationInformation info = setupValidationInformation(
288 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
289 info.getUserParams().getResources().getPnfs().get(0).setInstanceName(null);
290 info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
291 .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
292 info.getUserParams().getResources().getPnfs().get(1).setInstanceName(null);
293 validation.validate(info);
297 public void validateDifferentInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
298 ValidationInformation info = setupValidationInformation(
299 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
300 info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
301 .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
302 info.getUserParams().getResources().getPnfs().get(1).setInstanceName("new-pnf-instance-name");
303 validation.validate(info);
307 public void validateNullInstanceNameDifferentCustomizationIdPnfTest() throws IOException, ValidationException {
308 ValidationInformation info = setupValidationInformation(
309 "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
310 info.getUserParams().getResources().getPnfs().get(0).setInstanceName(null);
311 validation.validate(info);
315 public void validateInstanceNameExceptionTest() throws IOException, ValidationException {
316 thrown.expect(ValidationException.class);
317 thrown.expectMessage("instanceName in requestInfo does not match instanceName in userParams service");
319 setupValidationInformation("src/test/resources/Validation/UserParamsValidation/MacroRequest.json"));
323 public void validateModelTypeTest() throws ValidationException, IOException {
324 thrown.expect(ValidationException.class);
325 thrown.expectMessage("modelType in modelInfo does not match modelType in userParams service");
327 setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelType.json"));
331 public void validateModelInvariantIdTest() throws ValidationException, IOException {
332 thrown.expect(ValidationException.class);
333 thrown.expectMessage("modelInvariantId in modelInfo does not match modelInvariantId in userParams service");
335 setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelInvariantId.json"));
339 public void validateModelVersionIdTest() throws ValidationException, IOException {
340 thrown.expect(ValidationException.class);
341 thrown.expectMessage("modelVersionId in modelInfo does not match modelVersionId in userParams service");
343 setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelVersionId.json"));
347 public void validateModelNameTest() throws ValidationException, IOException {
348 thrown.expect(ValidationException.class);
349 thrown.expectMessage("modelName in modelInfo does not match modelName in userParams service");
351 setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelName.json"));
355 public void validateModelVersionTest() throws ValidationException, IOException {
356 thrown.expect(ValidationException.class);
357 thrown.expectMessage("modelVersion in modelInfo does not match modelVersion in userParams service");
359 setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelVersion.json"));
363 public void validateModelCustomizationIdTest() throws ValidationException, IOException {
364 thrown.expect(ValidationException.class);
365 thrown.expectMessage(
366 "modelCustomizationId in modelInfo does not match modelCustomizationId in userParams service");
367 validation.validate(setupValidationInformation(
368 "src/test/resources/Validation/UserParamsValidation/ModelCustomizationId.json"));