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