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