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