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