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.client.sdnc.mapper;
 
  23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
 
  24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 
  25 import static org.junit.Assert.assertEquals;
 
  26 import static org.junit.Assert.assertNotNull;
 
  27 import static org.junit.Assert.assertNull;
 
  29 import java.nio.file.Files;
 
  30 import java.nio.file.Paths;
 
  31 import java.util.ArrayList;
 
  32 import java.util.HashMap;
 
  33 import java.util.List;
 
  36 import org.junit.Rule;
 
  37 import org.junit.Test;
 
  38 import org.junit.rules.ExpectedException;
 
  39 import org.junit.runner.RunWith;
 
  40 import org.mockito.InjectMocks;
 
  41 import org.mockito.Spy;
 
  42 import org.mockito.junit.MockitoJUnitRunner;
 
  43 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
 
  44 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
 
  45 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 
  46 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 
  47 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
 
  48 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 
  49 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
 
  50 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
 
  51 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
 
  52 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
 
  53 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
 
  54 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
 
  55 import org.onap.so.client.exception.MapperException;
 
  56 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
 
  57 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
 
  59 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
 
  60 import com.fasterxml.jackson.databind.ObjectMapper;
 
  62 @RunWith(MockitoJUnitRunner.class)
 
  63 public class VfModuleTopologyOperationRequestMapperTest {
 
  65         private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
 
  66         private final static String ERRORMESSAGE = "VF Module model info is null for testVfModuleId";
 
  69         private GeneralTopologyObjectMapper generalTopologyObjectMapper;
 
  72         private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
 
  75         public ExpectedException expectedException = ExpectedException.none();
 
  78         public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
 
  80                 // prepare and set service instance
 
  81                 ServiceInstance serviceInstance = new ServiceInstance();
 
  82                 serviceInstance.setServiceInstanceId("serviceInstanceId");
 
  83                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
 
  84                 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
 
  85                 modelInfoServiceInstance.setModelName("serviceModelName");
 
  86                 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
 
  87                 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
 
  88                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
 
  89                 // prepare Customer object
 
  90                 Customer customer = new Customer();
 
  91                 customer.setGlobalCustomerId("globalCustomerId");
 
  92                 ServiceSubscription serviceSubscription = new ServiceSubscription();
 
  93                 serviceSubscription.setServiceType("productFamilyId");
 
  94                 customer.setServiceSubscription(serviceSubscription);
 
  96                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 
  98                 RequestContext requestContext = new RequestContext();
 
  99                 Map<String,Object> userParams = new HashMap<>();
 
 100                 userParams.put("key1", "value1");               
 
 101                 requestContext.setUserParams(userParams);
 
 102                 requestContext.setProductFamilyId("productFamilyId");
 
 103                 RequestParameters requestParameters = new RequestParameters();
 
 104                 requestParameters.setUsePreload(true);
 
 105                 requestContext.setRequestParameters(requestParameters);
 
 106                 requestContext.setMsoRequestId("MsoRequestId");
 
 108                 GenericVnf vnf = new GenericVnf();
 
 109                 vnf.setVnfId("testVnfId");
 
 110                 vnf.setVnfType("testVnfType");
 
 111                 vnf.setVnfName("testVnfName");
 
 112                 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
 
 113                 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
 
 114                 modelInfoGenericVnf.setModelName("vnfModelName");
 
 115                 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
 
 116                 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
 
 117                 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
 
 118                 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
 
 120                 VfModule vfModule = new VfModule();
 
 121                 vfModule.setVfModuleId("testVfModuleId");
 
 122                 vfModule.setVfModuleName("testVfModuleName");
 
 123                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
 
 124                 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
 
 125                 modelInfoVfModule.setModelName("vfModuleModelName");
 
 126                 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
 
 127                 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
 
 128                 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
 
 129                 vfModule.setModelInfoVfModule(modelInfoVfModule);
 
 130                 HashMap<String, String> cloudParams = new HashMap<String, String>();
 
 131                 cloudParams.put("key2", "value2");
 
 132                 vfModule.setCloudParams(cloudParams);
 
 134                 VolumeGroup volumeGroup = new VolumeGroup();
 
 135                 volumeGroup.setVolumeGroupId("volumeGroupId");
 
 136                 volumeGroup.setVolumeGroupName("volumeGroupName");
 
 138                 CloudRegion cloudRegion = new CloudRegion();
 
 140                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
 
 141                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, volumeGroup, vnf, serviceInstance, customer,
 
 142                                 cloudRegion, requestContext, null);
 
 144                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
 
 146                 ObjectMapper omapper = new ObjectMapper();
 
 147                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
 
 149                                 GenericResourceApiVfModuleOperationInformation.class);
 
 151                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
 
 152                                 .ignoring("requestInformation.requestId"));
 
 153                 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
 
 157         public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
 
 159                 // prepare and set service instance
 
 160                 ServiceInstance serviceInstance = new ServiceInstance();
 
 161                 serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 163                 // prepare and set vnf instance
 
 165                 GenericVnf vnf = new GenericVnf();
 
 166                 vnf.setVnfId("testVnfId");
 
 167                 vnf.setVnfType("testVnfType");
 
 169                 // prepare and set vf module instance
 
 171                 VfModule vfModule = new VfModule();
 
 172                 vfModule.setVfModuleId("testVfModuleId");
 
 173                 vfModule.setVfModuleName("testVfModuleName");
 
 175                 RequestContext requestContext = new RequestContext();
 
 176                 requestContext.setMsoRequestId("MsoRequestId");
 
 178                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
 
 179                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
 
 180                                 null, requestContext, null);
 
 182                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
 
 184                 ObjectMapper omapper = new ObjectMapper();
 
 185                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
 
 187                                 GenericResourceApiVfModuleOperationInformation.class);
 
 189                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
 
 190                                 .ignoring("requestInformation.requestId"));
 
 191                 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
 
 195         public void unassignGenericResourceApiVfModuleInformationNullMsoReqIdTest() throws Exception {
 
 197                 // prepare and set service instance
 
 198                 ServiceInstance serviceInstance = new ServiceInstance();
 
 199                 serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 201                 // prepare and set vnf instance
 
 203                 GenericVnf vnf = new GenericVnf();
 
 204                 vnf.setVnfId("testVnfId");
 
 205                 vnf.setVnfType("testVnfType");
 
 207                 // prepare and set vf module instance
 
 209                 VfModule vfModule = new VfModule();
 
 210                 vfModule.setVfModuleId("testVfModuleId");
 
 211                 vfModule.setVfModuleName("testVfModuleName");
 
 213                 RequestContext requestContext = new RequestContext();
 
 215                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
 
 216                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
 
 217                                 null, requestContext, null);
 
 219                 assertNotNull(vfModuleSDNCrequest.getRequestInformation().getRequestId());
 
 223         public void reqMapperTest() throws Exception {
 
 225                 // prepare and set service instance
 
 226                 ServiceInstance serviceInstance = new ServiceInstance();
 
 227                 serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 228                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
 
 229                 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
 
 230                 modelInfoServiceInstance.setModelName("serviceModelName");
 
 231                 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
 
 232                 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
 
 234                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
 
 235                 // prepare Customer object
 
 236                 Customer customer = new Customer();
 
 237                 customer.setGlobalCustomerId("globalCustomerId");
 
 238                 customer.setServiceSubscription(new ServiceSubscription());
 
 239                 // set Customer on service instance
 
 240                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 
 242                 RequestContext requestContext = new RequestContext();
 
 243                 RequestParameters requestParameters = new RequestParameters();
 
 244                 HashMap<String,Object> userParams1 = new HashMap<>();
 
 245                 userParams1.put("key1", "value1");
 
 246                 List<Map<String,Object>> userParams = new ArrayList<>();
 
 247                 userParams.add(userParams1);
 
 249                 requestParameters.setUserParams(userParams);
 
 250                 requestContext.setRequestParameters(requestParameters);
 
 251                 requestContext.setProductFamilyId("productFamilyId");
 
 253                 GenericVnf vnf = new GenericVnf();
 
 254                 vnf.setVnfId("testVnfId");
 
 255                 vnf.setVnfType("testVnfType");
 
 256                 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
 
 257                 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
 
 258                 modelInfoGenericVnf.setModelName("vnfModelName");
 
 259                 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
 
 260                 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
 
 261                 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
 
 262                 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
 
 264                 VfModule vfModule = new VfModule();
 
 265                 vfModule.setVfModuleId("testVfModuleId");
 
 266                 vfModule.setVfModuleName("testVfModuleName");
 
 267                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
 
 268                 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
 
 269                 modelInfoVfModule.setModelName("vfModuleModelName");
 
 270                 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
 
 271                 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
 
 272                 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
 
 273                 vfModule.setModelInfoVfModule(modelInfoVfModule);
 
 275                 CloudRegion cloudRegion = new CloudRegion();
 
 277                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
 
 278                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
 
 279                                 cloudRegion, requestContext, null);
 
 281                 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
 
 282                 assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
 
 283                 assertEquals("vfModuleModelCustomizationUuid", vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());     
 
 287         public void reqMapperNoModelInfoTest() throws Exception {
 
 289                 // prepare and set service instance
 
 290                 ServiceInstance serviceInstance = new ServiceInstance();
 
 291                 serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 292                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
 
 293                 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
 
 294                 modelInfoServiceInstance.setModelName("serviceModelName");
 
 295                 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
 
 296                 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
 
 298                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
 
 299                 // prepare Customer object
 
 300                 Customer customer = new Customer();
 
 301                 customer.setGlobalCustomerId("globalCustomerId");
 
 302                 customer.setServiceSubscription(new ServiceSubscription());
 
 303                 // set Customer on service instance
 
 304                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 
 306                 RequestContext requestContext = new RequestContext();
 
 307                 Map<String, Object> userParams = new HashMap<String, Object>();
 
 308                 userParams.put("key1", "value1");
 
 309                 requestContext.setUserParams(userParams);
 
 310                 requestContext.setProductFamilyId("productFamilyId");
 
 312                 GenericVnf vnf = new GenericVnf();
 
 313                 vnf.setVnfId("testVnfId");
 
 314                 vnf.setVnfType("testVnfType");
 
 315                 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
 
 316                 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
 
 317                 modelInfoGenericVnf.setModelName("vnfModelName");
 
 318                 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
 
 319                 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
 
 320                 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
 
 321                 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
 
 323                 VfModule vfModule = new VfModule();
 
 324                 vfModule.setVfModuleId("testVfModuleId");
 
 325                 vfModule.setVfModuleName("testVfModuleName");           
 
 326                 vfModule.setModelInfoVfModule(null);
 
 328                 CloudRegion cloudRegion = new CloudRegion();
 
 330                 expectedException.expect(MapperException.class);
 
 331                 expectedException.expectMessage(ERRORMESSAGE);
 
 333                 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
 
 334                         cloudRegion, requestContext, null);