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