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