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;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import java.io.IOException;
26 import java.io.StringReader;
28 import java.nio.file.Files;
29 import java.nio.file.Paths;
30 import java.util.Arrays;
31 import java.util.Collection;
32 import java.util.HashMap;
33 import java.util.Optional;
34 import javax.ws.rs.core.HttpHeaders;
35 import javax.ws.rs.core.Response;
36 import javax.xml.parsers.DocumentBuilder;
37 import javax.xml.parsers.DocumentBuilderFactory;
38 import org.apache.http.HttpStatus;
39 import org.junit.ClassRule;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.rules.ExpectedException;
43 import org.junit.runner.RunWith;
44 import org.onap.so.apihandler.common.ErrorNumbers;
45 import org.onap.so.exceptions.ValidationException;
46 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
47 import org.springframework.test.context.junit4.rules.SpringClassRule;
48 import org.springframework.test.context.junit4.rules.SpringMethodRule;
49 import com.fasterxml.jackson.core.JsonParseException;
50 import com.fasterxml.jackson.databind.JsonMappingException;
51 import com.fasterxml.jackson.databind.ObjectMapper;
52 import junitparams.JUnitParamsRunner;
53 import junitparams.Parameters;
54 import org.w3c.dom.Document;
55 import org.xml.sax.InputSource;
57 @RunWith(JUnitParamsRunner.class)
58 public class MsoRequestTest extends BaseTest {
59 private ObjectMapper mapper = new ObjectMapper();
60 private HashMap<String, String> instanceIdMapTest = new HashMap<String, String>();
61 private ServiceInstancesRequest sir;
62 private MsoRequest msoRequest;
63 private Action action;
64 private String version;
65 private int reqVersion;
66 private String originalRequestJSON;
67 private String requestJSON;
68 private boolean expected;
69 private String expectedException;
72 public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();
75 public final SpringMethodRule springMethodRule = new SpringMethodRule();
78 public ExpectedException thrown = ExpectedException.none();
80 public String inputStream(String JsonInput) throws IOException {
81 JsonInput = "src/test/resources/MsoRequestTest" + JsonInput;
82 String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
86 // Tests for successful validation of incoming JSON requests through the parse method
88 @Parameters(method = "successParameters")
89 public void successTest(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMapTest, Action action,
90 int reqVersion) throws ValidationException, IOException {
92 this.instanceIdMapTest = instanceIdMapTest;
94 this.reqVersion = reqVersion;
95 this.version = "v" + reqVersion;
96 this.instanceIdMapTest.put("serviceInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
97 this.instanceIdMapTest.put("vnfInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
98 this.instanceIdMapTest.put("vfModuleInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
99 this.instanceIdMapTest.put("volumeGroupInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
100 this.instanceIdMapTest.put("networkInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
101 this.instanceIdMapTest.put("configurationInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
102 this.msoRequest = new MsoRequest();
103 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
107 private Collection<Object[]> successParameters() throws JsonParseException, JsonMappingException, IOException {
108 return Arrays.asList(new Object[][] {
109 {mapper.readValue(inputStream("/CloudConfiguration/EmptyCloudConfiguration.json"),
110 ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, "3"},
111 {mapper.readValue(inputStream("/ProjectAndOwningEntity/EmptyOwningEntityName.json"),
112 ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, "5"},
113 {mapper.readValue(inputStream("/PlatformAndLineOfBusiness/OptionalLineOfBusiness.json"),
114 ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, "6"},
115 {mapper.readValue(inputStream("/ProjectAndOwningEntity/OptionalProject.json"),
116 ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, "6"},
117 {mapper.readValue(inputStream("/PlatformAndLineOfBusiness/PlatformTest.json"),
118 ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, "5"},
119 {mapper.readValue(inputStream("/RequestInfo/EmptyRequestorId.json"), ServiceInstancesRequest.class),
120 instanceIdMapTest, Action.createInstance, "3"},
121 {mapper.readValue(inputStream("/RequestInfo/ServiceProductFamilyIdFlag.json"),
122 ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, "5"},
123 {mapper.readValue(inputStream("/RequestInfo/ServiceProductFamilyIdUpdate.json"),
124 ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, "5"},
125 {mapper.readValue(inputStream("/ModelInfo/ModelCustomizationIdUsingPreload.json"),
126 ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, "5"},
127 {mapper.readValue(inputStream("/ModelInfo/ModelInvariantIdConfigurationDelete.json"),
128 ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, "3"},
129 {mapper.readValue(inputStream("/ModelInfo/ModelInvariantIdService.json"),
130 ServiceInstancesRequest.class), instanceIdMapTest, Action.deactivateInstance, "4"},
131 {mapper.readValue(inputStream("/ModelInfo/ModelVersionNetwork.json"), ServiceInstancesRequest.class),
132 instanceIdMapTest, Action.deleteInstance, "3"},
133 {mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationIdEmpty.json"),
134 ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, "5"},
135 {mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationNameNull.json"),
136 ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, "5"},
137 {mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationTest.json"),
138 ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, "5"},
139 {mapper.readValue(inputStream("/ModelInfo/ServiceModelNameEmptyOnActivate.json"),
140 ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, "2"},
141 {mapper.readValue(inputStream("/ModelInfo/ServiceModelNameEmptyOnDelete.json"),
142 ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, "2"},
143 {mapper.readValue(inputStream("/ModelInfo/ValidModelCustomizationId.json"),
144 ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, "4"},
145 {mapper.readValue(inputStream("/ModelInfo/ValidModelCustomizationId.json"),
146 ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, "5"},
147 {mapper.readValue(inputStream("/ModelInfo/ValidModelCustomizationIdService.json"),
148 ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, "5"},
149 {mapper.readValue(inputStream("/RelatedInstances/RelatedInstances.json"),
150 ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, "5"},
151 {mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelInvariantId.json"),
152 ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, "5"},
153 {mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesVfModule.json"),
154 ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, "5"},
155 {mapper.readValue(inputStream("/SuccessfulValidation/ServiceInPlaceSoftwareUpdate.json"),
156 ServiceInstancesRequest.class), instanceIdMapTest, Action.inPlaceSoftwareUpdate, "6"},
157 {mapper.readValue(inputStream("/SuccessfulValidation/ServiceInPlaceSoftwareUpdate.json"),
158 ServiceInstancesRequest.class), instanceIdMapTest, Action.applyUpdatedConfig, "6"},
159 {mapper.readValue(inputStream("/SuccessfulValidation/v5EnableService.json"),
160 ServiceInstancesRequest.class), instanceIdMapTest, Action.enablePort, "5"},
161 {mapper.readValue(inputStream("/SuccessfulValidation/VnfActivate.json"), ServiceInstancesRequest.class),
162 instanceIdMapTest, Action.activateInstance, "6"},
163 {mapper.readValue(inputStream("/RequestParameters/VnfRequestParameters.json"),
164 ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, "6"},
165 {mapper.readValue(inputStream("/SuccessfulValidation/v3DeleteNetwork.json"),
166 ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, "3"},
167 {mapper.readValue(inputStream("/SuccessfulValidation/v3UpdateNetwork.json"),
168 ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, "3"},
169 {mapper.readValue(inputStream("/SuccessfulValidation/v5CreateConfiguration.json"),
170 ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, "5"},
171 {mapper.readValue(inputStream("/SuccessfulValidation/v6CreateConfiguration.json"),
172 ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, "6"},
173 {mapper.readValue(inputStream("/SuccessfulValidation/v5EnableConfiguration.json"),
174 ServiceInstancesRequest.class), instanceIdMapTest, Action.enablePort, "5"},
175 {mapper.readValue(inputStream("/SuccessfulValidation/v5EnableConfiguration.json"),
176 ServiceInstancesRequest.class), instanceIdMapTest, Action.disablePort, "5"},
177 {mapper.readValue(inputStream("/SuccessfulValidation/v5ActivateConfiguration.json"),
178 ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, "5"},
179 {mapper.readValue(inputStream("/RelatedInstances/v5ActivateNoRelatedInstance.json"),
180 ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, "5"},
181 {mapper.readValue(inputStream("/SuccessfulValidation/v5DeactivateConfiguration.json"),
182 ServiceInstancesRequest.class), instanceIdMapTest, Action.deactivateInstance, "5"},
183 {mapper.readValue(inputStream("/RelatedInstances/v5DeactivateNoRelatedInstance.json"),
184 ServiceInstancesRequest.class), instanceIdMapTest, Action.deactivateInstance, "5"},
185 {mapper.readValue(inputStream("/SuccessfulValidation/v6AddRelationships.json"),
186 ServiceInstancesRequest.class), instanceIdMapTest, Action.addRelationships, "6"},
187 {mapper.readValue(inputStream("/SuccessfulValidation/UserParams.json"), ServiceInstancesRequest.class),
188 instanceIdMapTest, Action.addRelationships, "5"},
189 {mapper.readValue(inputStream("/SuccessfulValidation/ServiceAssign.json"),
190 ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, "7"},
191 {mapper.readValue(inputStream("/SuccessfulValidation/ServiceUnassign.json"),
192 ServiceInstancesRequest.class), instanceIdMapTest, Action.unassignInstance, "7"}});
196 @Parameters(method = "customWorkflowSuccessParameters")
197 public void customWorkflowSuccessTest(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMapTest,
198 Action action, int reqVersion) throws ValidationException, IOException {
200 this.instanceIdMapTest = instanceIdMapTest;
201 this.action = action;
202 this.reqVersion = reqVersion;
203 this.version = "v" + reqVersion;
204 this.instanceIdMapTest.put("serviceInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
205 this.instanceIdMapTest.put("vnfInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
206 this.instanceIdMapTest.put("workflowUuid", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
207 this.msoRequest = new MsoRequest();
208 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
212 private Collection<Object[]> customWorkflowSuccessParameters()
213 throws JsonParseException, JsonMappingException, IOException {
214 return Arrays.asList(
215 new Object[][] {{mapper.readValue(inputStream("/SuccessfulValidation/v1ExecuteCustomWorkflow.json"),
216 ServiceInstancesRequest.class), instanceIdMapTest, Action.inPlaceSoftwareUpdate, "1"}
222 @Parameters(method = "aLaCarteParameters")
223 public void aLaCarteFlagTest(boolean expected, ServiceInstancesRequest sir)
224 throws JsonParseException, IOException, ValidationException {
225 this.expected = expected;
227 this.msoRequest = new MsoRequest();
228 assertEquals(expected, msoRequest.getAlacarteFlag(sir));
232 private Collection<Object[]> aLaCarteParameters() throws IOException {
233 return Arrays.asList(new Object[][] {
234 {false, mapper.readValue(inputStream("/RequestParameters/RequestParametersNull.json"),
235 ServiceInstancesRequest.class)},
236 {true, mapper.readValue(inputStream("/RequestParameters/RequestParametersALaCarteTrue.json"),
237 ServiceInstancesRequest.class)}});
240 // Tests various scenarios ensuring that requests containing missing or invalid information will throw a
241 // ValidationException
243 @Parameters(method = "validationParameters")
244 public void validationFailureTest(String expectedException, ServiceInstancesRequest sir,
245 HashMap<String, String> instanceIdMapTest, Action action, int reqVersion)
246 throws JsonParseException, JsonMappingException, IOException, ValidationException {
247 this.expectedException = expectedException;
249 this.instanceIdMapTest = instanceIdMapTest;
250 this.action = action;
251 this.reqVersion = reqVersion;
252 this.version = "v" + reqVersion;
253 this.instanceIdMapTest.put("serviceInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
254 this.instanceIdMapTest.put("vnfInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
255 this.instanceIdMapTest.put("instanceGroupId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
256 thrown.expect(ValidationException.class);
257 thrown.expectMessage(expectedException);
258 this.msoRequest = new MsoRequest();
259 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
263 private Collection<Object[]> validationParameters() throws IOException {
264 return Arrays.asList(new Object[][] {
265 // ValidationException for CloudConfiguration
266 {"No valid cloudConfiguration is specified",
267 mapper.readValue(inputStream("/CloudConfiguration/CloudConfiguration.json"),
268 ServiceInstancesRequest.class),
269 instanceIdMapTest, Action.createInstance, 4},
270 {"No valid cloudConfiguration is specified",
271 mapper.readValue(inputStream("/CloudConfiguration/CloudConfigurationNetwork.json"),
272 ServiceInstancesRequest.class),
273 instanceIdMapTest, Action.createInstance, 5},
274 {"No valid cloudConfiguration is specified",
275 mapper.readValue(inputStream("/CloudConfiguration/CloudConfigurationVnf.json"),
276 ServiceInstancesRequest.class),
277 instanceIdMapTest, Action.replaceInstance, 5},
278 {"No valid cloudConfiguration is specified",
279 mapper.readValue(inputStream("/CloudConfiguration/CloudConfigurationConfig.json"),
280 ServiceInstancesRequest.class),
281 instanceIdMapTest, Action.enablePort, 5},
282 {"No valid cloudConfiguration is specified",
284 inputStream("/CloudConfiguration/InPlaceSoftwareUpdateCloudConfiguration.json"),
285 ServiceInstancesRequest.class),
286 instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
287 {"No valid cloudConfiguration is specified",
289 inputStream("/CloudConfiguration/DeactivateAndCloudDeleteCloudConfiguration.json"),
290 ServiceInstancesRequest.class),
291 instanceIdMapTest, Action.deactivateAndCloudDelete, 7},
292 {"No valid cloudConfiguration is specified",
293 mapper.readValue(inputStream("/CloudConfiguration/ScaleOutNoCloudConfig.json"),
294 ServiceInstancesRequest.class),
295 instanceIdMapTest, Action.scaleOut, 7},
296 {"No valid cloudConfiguration is specified",
297 mapper.readValue(inputStream("/CloudConfiguration/VnfRecreateCloudConfig.json"),
298 ServiceInstancesRequest.class),
299 instanceIdMapTest, Action.recreateInstance, 7},
300 {"No valid lcpCloudRegionId is specified",
301 mapper.readValue(inputStream("/CloudConfiguration/EmptyLcpCloudConfiguration.json"),
302 ServiceInstancesRequest.class),
303 instanceIdMapTest, Action.createInstance, 5},
304 {"No valid lcpCloudRegionId is specified",
305 mapper.readValue(inputStream("/CloudConfiguration/InPlaceSoftwareUpdateCloudRegionId.json"),
306 ServiceInstancesRequest.class),
307 instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
308 {"No valid tenantId is specified",
309 mapper.readValue(inputStream("/CloudConfiguration/EmptyTenantId.json"),
310 ServiceInstancesRequest.class),
311 instanceIdMapTest, Action.createInstance, 5},
312 {"No valid tenantId is specified",
313 mapper.readValue(inputStream("/CloudConfiguration/InPlaceSoftwareUpdateTenantId.json"),
314 ServiceInstancesRequest.class),
315 instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
316 // ValidationException for ModelInfo
317 {"No valid modelCustomizationId is specified",
318 mapper.readValue(inputStream("/ModelInfo/ModelCustomizationId.json"),
319 ServiceInstancesRequest.class),
320 instanceIdMapTest, Action.replaceInstance, 5},
321 {"No valid modelCustomizationId is specified",
322 mapper.readValue(inputStream("/ModelInfo/v5CreateConfigurationModelCustomizationId.json"),
323 ServiceInstancesRequest.class),
324 instanceIdMapTest, Action.createInstance, 5},
325 {"No valid modelCustomizationId is specified",
326 mapper.readValue(inputStream("/ModelInfo/v4CreateVfModuleMissingModelCustomizationId.json"),
327 ServiceInstancesRequest.class),
328 instanceIdMapTest, Action.createInstance, 4},
329 {"No valid modelCustomizationId or modelCustomizationName is specified",
330 mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationId.json"),
331 ServiceInstancesRequest.class),
332 instanceIdMapTest, Action.createInstance, 5},
333 {"No valid modelCustomizationId or modelCustomizationName is specified",
334 mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationIdPreload.json"),
335 ServiceInstancesRequest.class),
336 instanceIdMapTest, Action.replaceInstance, 5},
337 {"No valid modelCustomizationId or modelCustomizationName is specified",
338 mapper.readValue(inputStream("/ModelInfo/ModelCustomizationName.json"),
339 ServiceInstancesRequest.class),
340 instanceIdMapTest, Action.activateInstance, 5},
341 {"No valid modelCustomizationId or modelCustomizationName is specified",
342 mapper.readValue(inputStream("/ModelInfo/ModelCustomization.json"),
343 ServiceInstancesRequest.class),
344 instanceIdMapTest, Action.replaceInstance, 6},
345 {"No valid modelCustomizationId or modelCustomizationName is specified",
346 mapper.readValue(inputStream("/ModelInfo/ModelCustomization.json"),
347 ServiceInstancesRequest.class),
348 instanceIdMapTest, Action.updateInstance, 6},
349 {"No valid modelCustomizationId or modelCustomizationName is specified",
350 mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationId.json"),
351 ServiceInstancesRequest.class),
352 instanceIdMapTest, Action.replaceInstance, 5},
353 {"No valid modelCustomizationId or modelCustomizationName is specified",
354 mapper.readValue(inputStream("/ModelInfo/VnfRecreateNoModelCustomizationId.json"),
355 ServiceInstancesRequest.class),
356 instanceIdMapTest, Action.recreateInstance, 7},
357 {"No valid modelCustomizationId is specified",
358 mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelCustomizationId.json"),
359 ServiceInstancesRequest.class),
360 instanceIdMapTest, Action.scaleOut, 7},
361 {"No valid model-info is specified",
362 mapper.readValue(inputStream("/ModelInfo/ModelInfoNull.json"), ServiceInstancesRequest.class),
363 instanceIdMapTest, Action.createInstance, 5},
364 {"No valid modelInvariantId format is specified",
365 mapper.readValue(inputStream("/ModelInfo/InvalidModelInvariantId.json"),
366 ServiceInstancesRequest.class),
367 instanceIdMapTest, Action.createInstance, 2},
368 {"No valid modelInvariantId is specified",
369 mapper.readValue(inputStream("/ModelInfo/ModelInvariantId.json"),
370 ServiceInstancesRequest.class),
371 instanceIdMapTest, Action.deactivateInstance, 4},
372 {"No valid modelInvariantId is specified",
373 mapper.readValue(inputStream("/ModelInfo/v5ModelInvariantIdNetwork.json"),
374 ServiceInstancesRequest.class),
375 instanceIdMapTest, Action.enablePort, 5},
376 {"No valid modelInvariantId is specified",
377 mapper.readValue(inputStream("/ModelInfo/v5ModelInvariantIdDisablePort.json"),
378 ServiceInstancesRequest.class),
379 instanceIdMapTest, Action.disablePort, 5},
380 {"No valid modelInvariantId is specified",
381 mapper.readValue(inputStream("/ModelInfo/ModelInvariantIdVnf.json"),
382 ServiceInstancesRequest.class),
383 instanceIdMapTest, Action.updateInstance, 3},
384 {"No valid modelInvariantId is specified",
385 mapper.readValue(inputStream("/ModelInfo/ModelInvariantIdConfiguration.json"),
386 ServiceInstancesRequest.class),
387 instanceIdMapTest, Action.activateInstance, 3},
388 {"No valid modelInvariantId is specified",
389 mapper.readValue(inputStream("/ModelInfo/v5DeactivateModelInvariantId.json"),
390 ServiceInstancesRequest.class),
391 instanceIdMapTest, Action.deactivateInstance, 5},
392 {"No valid modelInvariantId is specified",
393 mapper.readValue(inputStream("/ModelInfo/v3UpdateNetworkBad.json"),
394 ServiceInstancesRequest.class),
395 instanceIdMapTest, Action.updateInstance, 4},
396 {"No valid modelInvariantId is specified",
397 mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelInvariantId.json"),
398 ServiceInstancesRequest.class),
399 instanceIdMapTest, Action.scaleOut, 7},
400 {"No valid modelInvariantId is specified",
401 mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelInvariantId.json"),
402 ServiceInstancesRequest.class),
403 instanceIdMapTest, Action.recreateInstance, 7},
404 {"No valid modelName is specified",
405 mapper.readValue(inputStream("/ModelInfo/VfModuleModelName.json"),
406 ServiceInstancesRequest.class),
407 instanceIdMapTest, Action.deleteInstance, 4},
408 {"No valid modelName is specified",
409 mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelName.json"),
410 ServiceInstancesRequest.class),
411 instanceIdMapTest, Action.scaleOut, 7},
412 {"No valid modelName is specified",
413 mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelName.json"),
414 ServiceInstancesRequest.class),
415 instanceIdMapTest, Action.recreateInstance, 7},
416 {"No valid modelType is specified",
417 mapper.readValue(inputStream("/ModelInfo/ModelTypeNull.json"), ServiceInstancesRequest.class),
418 instanceIdMapTest, Action.createInstance, 5},
419 {"No valid modelVersion is specified",
420 mapper.readValue(inputStream("/ModelInfo/ModelVersionService.json"),
421 ServiceInstancesRequest.class),
422 instanceIdMapTest, Action.updateInstance, 3},
423 {"No valid modelVersion is specified",
424 mapper.readValue(inputStream("/ModelInfo/ModelVersionVfModule.json"),
425 ServiceInstancesRequest.class),
426 instanceIdMapTest, Action.createInstance, 3},
427 {"No valid modelVersion is specified",
428 mapper.readValue(inputStream("/ModelInfo/ModelVersionServiceCreate.json"),
429 ServiceInstancesRequest.class),
430 instanceIdMapTest, Action.createInstance, 3},
431 {"No valid modelVersion is specified",
432 mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelVersion.json"),
433 ServiceInstancesRequest.class),
434 instanceIdMapTest, Action.scaleOut, 7},
435 {"No valid modelVersion is specified",
436 mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelVersion.json"),
437 ServiceInstancesRequest.class),
438 instanceIdMapTest, Action.recreateInstance, 7},
439 {"No valid modelVersionId is specified",
440 mapper.readValue(inputStream("/ModelInfo/ModelVersionId.json"), ServiceInstancesRequest.class),
441 instanceIdMapTest, Action.createInstance, 5},
442 {"No valid modelVersionId is specified",
443 mapper.readValue(inputStream("/ModelInfo/ConfigurationModelVersionId.json"),
444 ServiceInstancesRequest.class),
445 instanceIdMapTest, Action.activateInstance, 5},
446 {"No valid modelVersionId is specified",
447 mapper.readValue(inputStream("/ModelInfo/v2ModelVersionId.json"),
448 ServiceInstancesRequest.class),
449 instanceIdMapTest, Action.activateInstance, 4},
450 {"No valid modelVersionId is specified",
451 mapper.readValue(inputStream("/ModelInfo/v2ModelVersionId.json"),
452 ServiceInstancesRequest.class),
453 instanceIdMapTest, Action.deactivateInstance, 4},
454 {"No valid modelVersionId is specified",
455 mapper.readValue(inputStream("/ModelInfo/v2ModelVersionId.json"),
456 ServiceInstancesRequest.class),
457 instanceIdMapTest, Action.updateInstance, 5},
458 {"No valid modelVersionId is specified",
459 mapper.readValue(inputStream("/ModelInfo/v2ModelVersionId.json"),
460 ServiceInstancesRequest.class),
461 instanceIdMapTest, Action.enablePort, 5},
462 {"No valid modelVersionId is specified",
463 mapper.readValue(inputStream("/ModelInfo/v2ModelVersionId.json"),
464 ServiceInstancesRequest.class),
465 instanceIdMapTest, Action.disablePort, 5},
466 {"No valid modelVersionId is specified",
467 mapper.readValue(inputStream("/ModelInfo/ModelVersionIdCreate.json"),
468 ServiceInstancesRequest.class),
469 instanceIdMapTest, Action.createInstance, 5},
470 {"No valid modelVersionId is specified",
471 mapper.readValue(inputStream("/ModelInfo/v5ActivateModelVersionId.json"),
472 ServiceInstancesRequest.class),
473 instanceIdMapTest, Action.activateInstance, 5},
474 {"No valid modelVersionId is specified",
475 mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelVersionId.json"),
476 ServiceInstancesRequest.class),
477 instanceIdMapTest, Action.scaleOut, 7},
478 {"No valid modelVersionId is specified",
479 mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelVersionId.json"),
480 ServiceInstancesRequest.class),
481 instanceIdMapTest, Action.recreateInstance, 7},
482 {"No valid modelVersionId is specified",
483 mapper.readValue(inputStream("/ModelInfo/CreateInstanceGroupNoModelVersionId.json"),
484 ServiceInstancesRequest.class),
485 instanceIdMapTest, Action.createInstance, 7},
486 // ValidationException for Platform and LineOfBusiness
487 {"No valid lineOfBusinessName is specified",
488 mapper.readValue(inputStream("/PlatformAndLineOfBusiness/EmptyLineOfBusiness.json"),
489 ServiceInstancesRequest.class),
490 instanceIdMapTest, Action.createInstance, 5},
491 {"No valid platform is specified",
492 mapper.readValue(inputStream("/PlatformAndLineOfBusiness/Platform.json"),
493 ServiceInstancesRequest.class),
494 instanceIdMapTest, Action.createInstance, 6},
495 {"No valid platformName is specified",
496 mapper.readValue(inputStream("/PlatformAndLineOfBusiness/EmptyPlatformName.json"),
497 ServiceInstancesRequest.class),
498 instanceIdMapTest, Action.createInstance, 5},
499 // ValidationException for Project and OwningEntity
500 {"No valid owningEntity is specified",
501 mapper.readValue(inputStream("/ProjectAndOwningEntity/OwningEntity.json"),
502 ServiceInstancesRequest.class),
503 instanceIdMapTest, Action.createInstance, 6},
504 {"No valid owningEntityId is specified",
505 mapper.readValue(inputStream("/ProjectAndOwningEntity/EmptyOwningEntityId.json"),
506 ServiceInstancesRequest.class),
507 instanceIdMapTest, Action.createInstance, 5},
508 {"No valid projectName is specified",
509 mapper.readValue(inputStream("/ProjectAndOwningEntity/EmptyProjectName.json"),
510 ServiceInstancesRequest.class),
511 instanceIdMapTest, Action.createInstance, 5},
512 {"No valid owningEntity is specified",
513 mapper.readValue(inputStream("/ProjectAndOwningEntity/ServiceAssignNoOE.json"),
514 ServiceInstancesRequest.class),
515 instanceIdMapTest, Action.assignInstance, 7},
516 // ValidationException for RelatedInstances
517 {"No valid connectionPoint relatedInstance for Port Configuration is specified",
518 mapper.readValue(inputStream("/RelatedInstances/v5EnablePortNoConnectionPoint.json"),
519 ServiceInstancesRequest.class),
520 instanceIdMapTest, Action.disablePort, 5},
521 {"No valid connectionPoint relatedInstance for Port Configuration is specified",
522 mapper.readValue(inputStream("/RelatedInstances/v5EnablePortNoConnectionPoint.json"),
523 ServiceInstancesRequest.class),
524 instanceIdMapTest, Action.enablePort, 5},
525 {"No valid destination vnf relatedInstance for Port Configuration is specified",
526 mapper.readValue(inputStream("/RelatedInstances/v5CreateNoDestinationRelatedInstance.json"),
527 ServiceInstancesRequest.class),
528 instanceIdMapTest, Action.createInstance, 5},
529 {"No valid instanceId format in relatedInstance is specified",
530 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesIdFormat.json"),
531 ServiceInstancesRequest.class),
532 instanceIdMapTest, Action.createInstance, 5},
533 {"No valid instanceId in relatedInstance is specified",
534 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesId.json"),
535 ServiceInstancesRequest.class),
536 instanceIdMapTest, Action.createInstance, 5},
537 {"No valid instanceName format in relatedInstance is specified",
538 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesNameFormat.json"),
539 ServiceInstancesRequest.class),
540 instanceIdMapTest, Action.createInstance, 5},
541 {"No valid instanceName in relatedInstance for pnf modelType is specified",
542 mapper.readValue(inputStream("/RelatedInstances/v6AddRelationshipsInstanceName.json"),
543 ServiceInstancesRequest.class),
544 instanceIdMapTest, Action.removeRelationships, 6},
545 {"No valid instanceName in relatedInstance for pnf modelType is specified",
546 mapper.readValue(inputStream("/RelatedInstances/v6AddRelationshipsInstanceName.json"),
547 ServiceInstancesRequest.class),
548 instanceIdMapTest, Action.addRelationships, 6},
549 {"No valid modelCustomizationName or modelCustomizationId in relatedInstance of vnf is specified",
550 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelCustomizationId.json"),
551 ServiceInstancesRequest.class),
552 instanceIdMapTest, Action.activateInstance, 5},
553 {"No valid modelInfo in relatedInstance is specified",
554 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelInfo.json"),
555 ServiceInstancesRequest.class),
556 instanceIdMapTest, Action.createInstance, 5},
557 {"No valid modelInvariantId format in relatedInstance is specified",
558 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelInvariantIdFormat.json"),
559 ServiceInstancesRequest.class),
560 instanceIdMapTest, Action.createInstance, 5},
561 {"No valid modelInvariantId in relatedInstance is specified",
562 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelInvariantId.json"),
563 ServiceInstancesRequest.class),
564 instanceIdMapTest, Action.createInstance, 5},
565 {"No valid modelName in relatedInstance is specified",
566 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelName.json"),
567 ServiceInstancesRequest.class),
568 instanceIdMapTest, Action.createInstance, 5},
569 {"No valid modelType in relatedInstance is specified",
570 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelType.json"),
571 ServiceInstancesRequest.class),
572 instanceIdMapTest, Action.createInstance, 5},
573 {"No valid modelVersion in relatedInstance is specified",
574 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelVersion.json"),
575 ServiceInstancesRequest.class),
576 instanceIdMapTest, Action.createInstance, 5},
577 {"No valid modelVersionId in relatedInstance is specified",
578 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesModelVersionId.json"),
579 ServiceInstancesRequest.class),
580 instanceIdMapTest, Action.createInstance, 5},
581 {"No valid related instances is specified",
582 mapper.readValue(inputStream("/RelatedInstances/ServiceNoRelatedInstance.json"),
583 ServiceInstancesRequest.class),
584 instanceIdMapTest, Action.addRelationships, 2},
585 {"No valid related instances is specified",
586 mapper.readValue(inputStream("/RelatedInstances/ServiceNoRelatedInstance.json"),
587 ServiceInstancesRequest.class),
588 instanceIdMapTest, Action.removeRelationships, 2},
589 {"No valid related instances is specified",
590 mapper.readValue(inputStream("/RelatedInstances/v5EnablePortNoRelatedInstance.json"),
591 ServiceInstancesRequest.class),
592 instanceIdMapTest, Action.disablePort, 2},
593 {"No valid related instances is specified",
594 mapper.readValue(inputStream("/RelatedInstances/v5EnablePortNoRelatedInstance.json"),
595 ServiceInstancesRequest.class),
596 instanceIdMapTest, Action.enablePort, 5},
597 {"No valid related instances is specified",
598 mapper.readValue(inputStream("/RelatedInstances/v5CreateNoRelatedInstances.json"),
599 ServiceInstancesRequest.class),
600 instanceIdMapTest, Action.createInstance, 5},
601 {"No valid related instances is specified",
602 mapper.readValue(inputStream("/RelatedInstances/v4RelatedInstancesNull.json"),
603 ServiceInstancesRequest.class),
604 instanceIdMapTest, Action.updateInstance, 4},
605 {"No valid related instances is specified",
606 mapper.readValue(inputStream("/RelatedInstances/ScaleOutNoRelatedInstances.json"),
607 ServiceInstancesRequest.class),
608 instanceIdMapTest, Action.scaleOut, 7},
609 {"No valid related service instance for vfModule request is specified",
610 mapper.readValue(inputStream("/RelatedInstances/VfModuleRelatedInstancesService.json"),
611 ServiceInstancesRequest.class),
612 instanceIdMapTest, Action.activateInstance, 5},
613 {"No valid related service instance for vnf request is specified",
614 mapper.readValue(inputStream("/RelatedInstances/VnfRelatedInstancesService.json"),
615 ServiceInstancesRequest.class),
616 instanceIdMapTest, Action.activateInstance, 5},
617 {"No valid related service instance for volumeGroup request is specified",
618 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesServiceInstance.json"),
619 ServiceInstancesRequest.class),
620 instanceIdMapTest, Action.activateInstance, 5},
621 {"No valid related vnf instance for vfModule request is specified",
622 mapper.readValue(inputStream("/RelatedInstances/VfModuleRelatedInstancesVnf.json"),
623 ServiceInstancesRequest.class),
624 instanceIdMapTest, Action.activateInstance, 5},
625 {"No valid related vnf instance for volumeGroup request is specified",
626 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesVnfInstance.json"),
627 ServiceInstancesRequest.class),
628 instanceIdMapTest, Action.activateInstance, 5},
629 {"No valid serviceInstanceId matching the serviceInstanceId in request URI is specified",
630 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesInstanceId.json"),
631 ServiceInstancesRequest.class),
632 instanceIdMapTest, Action.activateInstance, 5},
633 {"No valid serviceInstanceId matching the serviceInstanceId in request URI is specified",
634 mapper.readValue(inputStream("/RelatedInstances/v6VnfDeleteInstance.json"),
635 ServiceInstancesRequest.class),
636 instanceIdMapTest, Action.deleteInstance, 6},
637 {"No valid source vnf relatedInstance for Port Configuration is specified",
638 mapper.readValue(inputStream("/RelatedInstances/v5CreateNoSourceRelatedInstance.json"),
639 ServiceInstancesRequest.class),
640 instanceIdMapTest, Action.createInstance, 5},
641 {"No valid vnfInstanceId matching the vnfInstanceId in request URI is specified",
642 mapper.readValue(inputStream("/RelatedInstances/RelatedInstancesVnfInstanceId.json"),
643 ServiceInstancesRequest.class),
644 instanceIdMapTest, Action.activateInstance, 5},
645 {"No valid instanceName format is specified",
646 mapper.readValue(inputStream("/RelatedInstances/InvalidInstanceName.json"),
647 ServiceInstancesRequest.class),
648 instanceIdMapTest, Action.createInstance, 2},
649 {"No valid relatedInstanceList is specified",
650 mapper.readValue(inputStream("/RelatedInstances/CreateInstanceGroupNoRelatedInstances.json"),
651 ServiceInstancesRequest.class),
652 instanceIdMapTest, Action.createInstance, 7},
653 {"No valid related service instance for instanceGroup request is specified",
654 mapper.readValue(inputStream("/RelatedInstances/CreateInstanceGroupService.json"),
655 ServiceInstancesRequest.class),
656 instanceIdMapTest, Action.createInstance, 7},
657 {"No valid modelVersionId in relatedInstance is specified",
659 inputStream("/RelatedInstances/CreateInstanceGroupRelatedInstanceModelVersionId.json"),
660 ServiceInstancesRequest.class),
661 instanceIdMapTest, Action.createInstance, 7},
662 // ValidationException for RequestInfo
663 {"No valid requestInfo is specified",
664 mapper.readValue(inputStream("/RequestInfo/RequestInfoNull.json"),
665 ServiceInstancesRequest.class),
666 instanceIdMapTest, Action.createInstance, 5},
667 {"No valid requestInfo is specified",
668 mapper.readValue(inputStream("/RequestInfo/RequestInfo.json"), ServiceInstancesRequest.class),
669 instanceIdMapTest, Action.applyUpdatedConfig, 6},
670 {"No valid requestInfo is specified",
671 mapper.readValue(inputStream("/RequestInfo/RequestInfo.json"), ServiceInstancesRequest.class),
672 instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
673 {"No valid requestInfo is specified",
674 mapper.readValue(inputStream("/RequestInfo/ScaleOutNoRequestInfo.json"),
675 ServiceInstancesRequest.class),
676 instanceIdMapTest, Action.scaleOut, 7},
677 {"No valid productFamilyId is specified",
678 mapper.readValue(inputStream("/RequestInfo/VnfProductFamilyId.json"),
679 ServiceInstancesRequest.class),
680 instanceIdMapTest, Action.createInstance, 3},
681 {"No valid productFamilyId is specified",
682 mapper.readValue(inputStream("/RequestInfo/NetworkProductFamilyId.json"),
683 ServiceInstancesRequest.class),
684 instanceIdMapTest, Action.createInstance, 3},
685 {"No valid productFamilyId is specified",
686 mapper.readValue(inputStream("/RequestInfo/NetworkProductFamilyId.json"),
687 ServiceInstancesRequest.class),
688 instanceIdMapTest, Action.updateInstance, 3},
689 {"No valid productFamilyId is specified",
690 mapper.readValue(inputStream("/RequestInfo/ServiceProductFamilyId.json"),
691 ServiceInstancesRequest.class),
692 instanceIdMapTest, Action.createInstance, 5},
693 {"No valid requestorId is specified",
694 mapper.readValue(inputStream("/RequestInfo/EmptyRequestorId.json"),
695 ServiceInstancesRequest.class),
696 instanceIdMapTest, Action.createInstance, 5},
697 {"No valid requestorId is specified",
698 mapper.readValue(inputStream("/RequestInfo/RequestorId.json"), ServiceInstancesRequest.class),
699 instanceIdMapTest, Action.applyUpdatedConfig, 6},
700 {"No valid requestorId is specified",
701 mapper.readValue(inputStream("/RequestInfo/RequestorId.json"), ServiceInstancesRequest.class),
702 instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
703 // ValidationException for RequestParameters
704 {"No valid aLaCarte in requestParameters",
705 mapper.readValue(inputStream("/RequestParameters/RequestParametersNull.json"),
706 ServiceInstancesRequest.class),
707 instanceIdMapTest, Action.addRelationships, 4},
708 {"No valid requestParameters is specified",
709 mapper.readValue(inputStream("/RequestParameters/RequestParametersNull.json"),
710 ServiceInstancesRequest.class),
711 instanceIdMapTest, Action.createInstance, 5},
712 {"No valid requestParameters is specified",
713 mapper.readValue(inputStream("/RequestParameters/RequestParameters.json"),
714 ServiceInstancesRequest.class),
715 instanceIdMapTest, Action.applyUpdatedConfig, 6},
716 {"No valid requestParameters is specified",
717 mapper.readValue(inputStream("/RequestParameters/RequestParameters.json"),
718 ServiceInstancesRequest.class),
719 instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
720 {"No valid requestParameters is specified",
721 mapper.readValue(inputStream("/RequestParameters/AssignEmptyReqParameters.json"),
722 ServiceInstancesRequest.class),
723 instanceIdMapTest, Action.assignInstance, 7},
724 // ValidationException for SubscriberInfo
725 {"No valid globalSubscriberId is specified",
726 mapper.readValue(inputStream("/SubscriberInfo/EmptyGlobalSubscriberId.json"),
727 ServiceInstancesRequest.class),
728 instanceIdMapTest, Action.createInstance, 5},
729 {"No valid subscriberInfo is specified",
730 mapper.readValue(inputStream("/SubscriberInfo/EmptySubscriberInfo.json"),
731 ServiceInstancesRequest.class),
732 instanceIdMapTest, Action.createInstance, 5},
733 {"No valid subscriptionServiceType is specified",
734 mapper.readValue(inputStream("/SubscriberInfo/EmptySubscriptionServiceType.json"),
735 ServiceInstancesRequest.class),
736 instanceIdMapTest, Action.createInstance, 5},
737 {"No valid subscriberInfo is specified",
738 mapper.readValue(inputStream("/SubscriberInfo/AssignEmptySubscriberInfo.json"),
739 ServiceInstancesRequest.class),
740 instanceIdMapTest, Action.assignInstance, 7},
741 // Validation for UserParams
742 {"No valid cloudConfiguration in userParams vnf resources is specified",
743 mapper.readValue(inputStream("/RequestParameters/AssignCloudConfigVnf.json"),
744 ServiceInstancesRequest.class),
745 instanceIdMapTest, Action.assignInstance, 7},
746 {"No valid cloudConfiguration in userParams network resources is specified",
747 mapper.readValue(inputStream("/RequestParameters/NetworkCloudConfig.json"),
748 ServiceInstancesRequest.class),
749 instanceIdMapTest, Action.assignInstance, 7},
750 {"No valid modelInfo in userParams is specified",
751 mapper.readValue(inputStream("/RequestParameters/UserParamsModelInfo.json"),
752 ServiceInstancesRequest.class),
753 instanceIdMapTest, Action.assignInstance, 7},
754 {"No valid modelInfo in userParams vnf resources is specified",
755 mapper.readValue(inputStream("/RequestParameters/UserParamsVnfModelInfo.json"),
756 ServiceInstancesRequest.class),
757 instanceIdMapTest, Action.assignInstance, 7},
758 {"No valid modelVersionId in userParams service modelInfo is specified",
759 mapper.readValue(inputStream("/RequestParameters/UserParamsModelVersionId.json"),
760 ServiceInstancesRequest.class),
761 instanceIdMapTest, Action.assignInstance, 7},
762 {"No valid modelVersionId in userParams vnf resources is specified",
763 mapper.readValue(inputStream("/RequestParameters/VnfModelVersionId.json"),
764 ServiceInstancesRequest.class),
765 instanceIdMapTest, Action.assignInstance, 7},
766 {"No valid modelVersionId in userParams vfModule resources is specified",
767 mapper.readValue(inputStream("/RequestParameters/VfModuleModelVersionId.json"),
768 ServiceInstancesRequest.class),
769 instanceIdMapTest, Action.assignInstance, 7},
770 {"No valid modelVersionId in userParams network resources is specified",
771 mapper.readValue(inputStream("/RequestParameters/NetworkModelVersionId.json"),
772 ServiceInstancesRequest.class),
773 instanceIdMapTest, Action.assignInstance, 7},
774 {"No valid platform in userParams vnf resources is specified",
775 mapper.readValue(inputStream("/RequestParameters/UserParamsPlatform.json"),
776 ServiceInstancesRequest.class),
777 instanceIdMapTest, Action.assignInstance, 7},
778 {"No valid platformName in userParams vnf resources is specified",
779 mapper.readValue(inputStream("/RequestParameters/UserParamsPlatformName.json"),
780 ServiceInstancesRequest.class),
781 instanceIdMapTest, Action.assignInstance, 7},
782 {"No valid productFamilyId in userParams vnf resources is specified",
783 mapper.readValue(inputStream("/RequestParameters/ProductFamilyId.json"),
784 ServiceInstancesRequest.class),
785 instanceIdMapTest, Action.assignInstance, 7},
786 {"No valid vfModules in userParams vnf resources is specified",
787 mapper.readValue(inputStream("/RequestParameters/VfModules.json"),
788 ServiceInstancesRequest.class),
789 instanceIdMapTest, Action.assignInstance, 7},
790 {"No valid modelInfo in userParams vfModules resources is specified",
791 mapper.readValue(inputStream("/RequestParameters/VfModulesModelInfo.json"),
792 ServiceInstancesRequest.class),
793 instanceIdMapTest, Action.assignInstance, 7},
794 {"No valid modelInfo in userParams network resources is specified",
795 mapper.readValue(inputStream("/RequestParameters/Network.json"), ServiceInstancesRequest.class),
796 instanceIdMapTest, Action.assignInstance, 7},
797 {"No valid modelCustomizationId in userParams vfModule resources is specified",
798 mapper.readValue(inputStream("/RequestParameters/VfModuleModelCustomizationId.json"),
799 ServiceInstancesRequest.class),
800 instanceIdMapTest, Action.assignInstance, 7},
801 {"No valid modelCustomizationId in userParams vnf resources is specified",
802 mapper.readValue(inputStream("/RequestParameters/VnfModelCustomizationId.json"),
803 ServiceInstancesRequest.class),
804 instanceIdMapTest, Action.assignInstance, 7},
805 {"No valid modelCustomizationId in userParams network resources is specified",
806 mapper.readValue(inputStream("/RequestParameters/NetworkModelCustomizationId.json"),
807 ServiceInstancesRequest.class),
808 instanceIdMapTest, Action.assignInstance, 7},
809 // Validation for ConfigurationParameters
810 {"No valid configuration parameters is specified",
811 mapper.readValue(inputStream("/ConfigurationParameters/NoConfigurationParameters.json"),
812 ServiceInstancesRequest.class),
813 instanceIdMapTest, Action.scaleOut, 7},
814 // Validation for Add and Remove Members
815 {"No valid vnf relatedInstance is specified",
816 mapper.readValue(inputStream("/MembersValidation/RelatedInstancesVnf.json"),
817 ServiceInstancesRequest.class),
818 instanceIdMapTest, Action.addMembers, 7},
819 {"No valid related instances is specified",
820 mapper.readValue(inputStream("/MembersValidation/RelatedInstances.json"),
821 ServiceInstancesRequest.class),
822 instanceIdMapTest, Action.addMembers, 7},
823 {"No valid requestInfo is specified",
824 mapper.readValue(inputStream("/MembersValidation/MembersRequestInfo.json"),
825 ServiceInstancesRequest.class),
826 instanceIdMapTest, Action.addMembers, 7},
827 {"No valid requestorId is specified",
828 mapper.readValue(inputStream("/MembersValidation/MembersRequestorId.json"),
829 ServiceInstancesRequest.class),
830 instanceIdMapTest, Action.addMembers, 7},
831 {"No valid source is specified",
832 mapper.readValue(inputStream("/MembersValidation/AddMembersSource.json"),
833 ServiceInstancesRequest.class),
834 instanceIdMapTest, Action.addMembers, 7},
835 {"No valid instanceId in relatedInstances is specified",
836 mapper.readValue(inputStream("/MembersValidation/AddMembersInstanceId.json"),
837 ServiceInstancesRequest.class),
838 instanceIdMapTest, Action.addMembers, 7},
839 {"No valid modelType in relatedInstance is specified",
840 mapper.readValue(inputStream("/MembersValidation/DeleteMembersModelType.json"),
841 ServiceInstancesRequest.class),
842 instanceIdMapTest, Action.removeMembers, 7}});
846 public void nullInstanceIdMapTest()
847 throws JsonParseException, JsonMappingException, IOException, ValidationException {
848 this.sir = mapper.readValue(inputStream("/RequestParameters/RequestParametersNull.json"),
849 ServiceInstancesRequest.class);
850 this.instanceIdMapTest = null;
852 this.version = "v" + reqVersion;
853 thrown.expect(NullPointerException.class);
854 this.msoRequest = new MsoRequest();
855 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
859 public void serviceInstanceIdHashMapFailureTest()
860 throws JsonParseException, JsonMappingException, IOException, ValidationException {
861 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
862 ServiceInstancesRequest.class);
863 this.instanceIdMapTest.put("serviceInstanceId", "test");
864 this.action = Action.createInstance;
866 this.version = "v" + reqVersion;
867 thrown.expect(ValidationException.class);
868 thrown.expectMessage("No valid serviceInstanceId is specified");
869 this.msoRequest = new MsoRequest();
870 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
874 public void vnfInstanceIdHashMapFailureTest()
875 throws JsonParseException, JsonMappingException, IOException, ValidationException {
876 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
877 ServiceInstancesRequest.class);
878 this.instanceIdMapTest.put("vnfInstanceId", "test");
879 this.action = Action.createInstance;
881 this.version = "v" + reqVersion;
882 thrown.expect(ValidationException.class);
883 thrown.expectMessage("No valid vnfInstanceId is specified");
884 this.msoRequest = new MsoRequest();
885 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
889 public void vfModuleInstanceIdHashMapFailureTest()
890 throws JsonParseException, JsonMappingException, IOException, ValidationException {
891 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
892 ServiceInstancesRequest.class);
893 this.instanceIdMapTest.put("vfModuleInstanceId", "test");
894 this.action = Action.createInstance;
896 this.version = "v" + reqVersion;
897 thrown.expect(ValidationException.class);
898 thrown.expectMessage("No valid vfModuleInstanceId is specified");
899 this.msoRequest = new MsoRequest();
900 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
904 public void volumeGroupInstanceIdHashMapFailureTest()
905 throws JsonParseException, JsonMappingException, IOException, ValidationException {
906 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
907 ServiceInstancesRequest.class);
908 this.instanceIdMapTest.put("volumeGroupInstanceId", "test");
909 this.action = Action.createInstance;
911 this.version = "v" + reqVersion;
912 thrown.expect(ValidationException.class);
913 thrown.expectMessage("No valid volumeGroupInstanceId is specified");
914 this.msoRequest = new MsoRequest();
915 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
919 public void networkInstanceIdHashMapFailureTest()
920 throws JsonParseException, JsonMappingException, IOException, ValidationException {
921 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
922 ServiceInstancesRequest.class);
923 this.instanceIdMapTest.put("networkInstanceId", "test");
924 this.action = Action.createInstance;
926 this.version = "v" + reqVersion;
927 thrown.expect(ValidationException.class);
928 thrown.expectMessage("No valid networkInstanceId is specified");
929 this.msoRequest = new MsoRequest();
930 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
934 public void configurationInstanceIdHashMapFailureTest()
935 throws JsonParseException, JsonMappingException, IOException, ValidationException {
936 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
937 ServiceInstancesRequest.class);
938 this.instanceIdMapTest.put("configurationInstanceId", "test");
939 this.action = Action.createInstance;
940 thrown.expect(ValidationException.class);
942 this.version = "v" + reqVersion;
943 thrown.expectMessage("No valid configurationInstanceId is specified");
944 this.msoRequest = new MsoRequest();
945 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
949 public void instanceGroupIdHashMapFailureTest()
950 throws JsonParseException, JsonMappingException, IOException, ValidationException {
951 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
952 ServiceInstancesRequest.class);
953 this.instanceIdMapTest.put("instanceGroupInstanceId", "test");
954 this.action = Action.createInstance;
955 thrown.expect(ValidationException.class);
957 this.version = "v" + reqVersion;
958 thrown.expectMessage("No valid instanceGroupInstanceId is specified");
959 this.msoRequest = new MsoRequest();
960 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
964 public void testVfModuleV4UsePreLoad()
965 throws JsonParseException, JsonMappingException, IOException, ValidationException {
966 this.requestJSON = inputStream("/SuccessfulValidation/v4CreateVfModule.json");
967 this.instanceIdMapTest.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
968 this.instanceIdMapTest.put("vnfInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
970 this.version = "v" + reqVersion;
971 this.sir = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
972 this.msoRequest = new MsoRequest();
973 msoRequest.parse(sir, instanceIdMapTest, Action.createInstance, version, originalRequestJSON, reqVersion,
976 this.requestJSON = inputStream("/ModelInfo/v4CreateVfModuleNoCustomizationId.json");
977 this.instanceIdMapTest.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
978 this.instanceIdMapTest.put("vnfInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
979 this.sir = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
980 msoRequest = new MsoRequest();
981 msoRequest.parse(sir, instanceIdMapTest, Action.createInstance, version, originalRequestJSON, reqVersion,
986 public void buildServiceErrorResponseTest()
987 throws JsonParseException, JsonMappingException, IOException, ValidationException {
988 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
989 ServiceInstancesRequest.class);
990 this.instanceIdMapTest.put("serviceInstanceId", "test");
991 this.action = Action.createInstance;
993 this.version = "v" + reqVersion;
994 thrown.expect(ValidationException.class);
995 thrown.expectMessage("No valid serviceInstanceId is specified");
996 this.msoRequest = new MsoRequest();
997 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
999 msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST, MsoException.ServiceException,
1000 "Mapping of request to JSON object failed. ", ErrorNumbers.SVC_BAD_PARAMETER, null, version);
1001 assertEquals("application/json", response.getHeaders().get(HttpHeaders.CONTENT_TYPE).get(0));
1002 assertEquals("0", response.getHeaders().get("X-MinorVersion").get(0));
1003 assertEquals("0", response.getHeaders().get("X-PatchVersion").get(0));
1004 assertEquals("7.0.0", response.getHeaders().get("X-LatestVersion").get(0));
1008 public void buildServiceErrorPolicyExceptionResponseTest()
1009 throws JsonParseException, JsonMappingException, IOException, ValidationException {
1010 this.sir = mapper.readValue(inputStream("/SuccessfulValidation/InstanceIdHashMap.json"),
1011 ServiceInstancesRequest.class);
1012 this.instanceIdMapTest.put("serviceInstanceId", "test");
1013 this.action = Action.createInstance;
1014 this.reqVersion = 5;
1015 this.version = "v" + reqVersion;
1016 thrown.expect(ValidationException.class);
1017 thrown.expectMessage("No valid serviceInstanceId is specified");
1018 this.msoRequest = new MsoRequest();
1021 this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
1023 msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST, MsoException.PolicyException,
1024 "Mapping of request to JSON object failed. ", ErrorNumbers.SVC_BAD_PARAMETER, null, version);
1025 assertEquals("application/json", response.getHeaders().get(HttpHeaders.CONTENT_TYPE).get(0));
1026 assertEquals("0", response.getHeaders().get("X-MinorVersion").get(0));
1027 assertEquals("0", response.getHeaders().get("X-PatchVersion").get(0));
1028 assertEquals("7.0.0", response.getHeaders().get("X-LatestVersion").get(0));
1032 public void domToStrTest() throws Exception {
1033 String xmlStr = "<dummy><service-instance-id>1234</service-instance-id></dummy>";
1034 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
1035 DocumentBuilder builder = factory.newDocumentBuilder();
1036 Document document = builder.parse(new InputSource(new StringReader(xmlStr)));
1037 String result = MsoRequest.domToStr(document);
1038 assertNotNull(result);
1042 public void buildSelfLinkUrlTest() throws Exception {
1044 String incomingUrl = "http://localhost:8080/onap/infra/so/serviceInstantiation/v7/serviceInstances";
1045 String expectedSelfLink = "http://localhost:8080/orchestrationRequests/v7/efce3167-5e45-4666-9d4d-22e23648e5d1";
1046 String requestId = "efce3167-5e45-4666-9d4d-22e23648e5d1";
1047 this.msoRequest = new MsoRequest();
1048 Optional<URL> actualSelfLinkUrl = msoRequest.buildSelfLinkUrl(incomingUrl, requestId);
1049 assertEquals(expectedSelfLink, actualSelfLinkUrl.get().toString());
1051 String incomingUrlV = "http://localhost:8080/onap/infra/so/serviceInstantiation/V7/serviceInstances";
1052 String expectedSelfLinkV =
1053 "http://localhost:8080/orchestrationRequests/V7/efce3167-5e45-4666-9d4d-22e23648e5d1";
1054 Optional<URL> actualSelfLinkUrlV = msoRequest.buildSelfLinkUrl(incomingUrlV, requestId);
1055 assertEquals(expectedSelfLinkV, actualSelfLinkUrlV.get().toString());