Merge "Split Upgrade VF Module tests from viewEdit"
diff --git a/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
index fc568c0..0fef7ae 100644
--- a/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
@@ -3,9 +3,7 @@
 import {PnfModel} from '../../support/jsonBuilders/models/pnf.model';
 import {ServiceModel} from '../../support/jsonBuilders/models/service.model';
 import {AaiServiceInstancesModel} from '../../support/jsonBuilders/models/serviceInstances.model';
-import {AAISubDetailsModel} from '../../support/jsonBuilders/models/aaiSubDetails.model';
 import {AAISubViewEditModel} from '../../support/jsonBuilders/models/aaiSubViewEdit.model';
-import {initServicePlanning} from "./viewOnlyDrawingBoard.e2e";
 
 
 describe('View Edit Page', function () {
@@ -15,7 +13,6 @@
     let serviceInvariantId = "d27e42cf-087e-4d31-88ac-6c4b7585f800";
 
     let jsonBuilderAAISubViewEditModel: JsonBuilder<AAISubViewEditModel> = new JsonBuilder<AAISubViewEditModel>();
-    let jsonBuilderAAISubDetailsModel: JsonBuilder<AAISubDetailsModel> = new JsonBuilder<AAISubDetailsModel>();
     let jsonBuilderPNF: JsonBuilder<PnfModel> = new JsonBuilder<PnfModel>();
     let jsonBuilderAaiServiceInstances: JsonBuilder<AaiServiceInstancesModel> = new JsonBuilder<AaiServiceInstancesModel>();
     let jsonBuilderEmpty: JsonBuilder<Object> = new JsonBuilder<Object>();
@@ -109,14 +106,7 @@
           "aai-sub-view-edit")
       });
 
-      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/aaiSubDetails.json').then((res) => {
-        jsonBuilderAAISubDetailsModel.basicJson(
-          res,
-          Cypress.config('baseUrl') + "/aai_sub_details/**",
-          200,
-          0,
-          "aai-sub-details")
-      });
+      cy.initGetAAISubDetails();
 
       cy.readFile('cypress/support/jsonBuilders/mocks/jsons/aaiServiceInstancePnfs.json').then((res) => {
         jsonBuilderPNF.basicJson(
@@ -153,7 +143,6 @@
           0,
           "aai_getPortMirroringSourcePorts - empty response")
       });
-      mockAsyncBulkResponse();
       cy.initVidMock({serviceUuid: commonUuid, invariantId: serviceInvariantId});
       cy.setReduxState();
       cy.permissionVidMock();
@@ -164,13 +153,6 @@
       cy.screenshot();
     });
 
-    it(`should display the more actions button if user is permitted`, function () {
-      cy.visit('/serviceModels.htm#/instantiate?subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&subscriberName=USP%20VOICE&serviceType=VIRTUAL%20USP&serviceInstanceId=3f93c7cb-2fd0-4557-9514-e189b7b04f9d&aaiModelVersionId=6e59c5de-f052-46fa-aa7e-2fca9d674c44&isPermitted=true');
-      cy.wait('@service-complexService');
-      cy.wait('@aai_getPortMirroringConfigsDate - empty response');
-      cy.getElementByDataTestsId("show-new-screen").should('be.visible').should('have.text', 'More actions').click();
-      });
-
     it(`should display service model name and version on each info form`, function () {
       let typesToIncludeModel:Array<string> = ['service', 'vnf', 'vfmodule', 'volume-group', 'network'];
       cy.visit('/serviceModels.htm#/instantiate?subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&subscriberName=SILVIA%20ROBBINS&serviceType=TYLER%20SILVIA&serviceInstanceId=3f93c7cb-2fd0-4557-9514-e189b7b04f9d&aaiModelVersionId=6e59c5de-f052-46fa-aa7e-2fca9d674c44&isPermitted=true');
@@ -217,64 +199,8 @@
       cy.getElementByDataTestsId("deactivateButton").should('have.attr', 'disabled');
     });
 
-    it(`Upgrade a VFModule`, function(){
-      cy.initDrawingBoardUserPermission();
-      initServicePlanning("EDIT",
-        '../vid-automation/src/test/resources/viewEdit/ServiceTreeWithMultipleChildren_serviceInstance_withUpdatedLatestVersion.json');
-      upgradeTheVFM();
-      undoUpgradeForVFM();
-      upgradeTheVFM();
-      cy.getDrawingBoardDeployBtn().click();
-      cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
-        expect(Object(xhr.request.body).action).to.equal("None_Upgrade");
-        expect(Object(xhr.request.body).vnfs['VNF2_INSTANCE_ID'].action).to.equal("None_Upgrade");
-        expect(Object(xhr.request.body).vnfs['VNF2_INSTANCE_ID'].vfModules['dc229cd8-c132-4455-8517-5c1787c18b14']['3ef042c4-259f-45e0-9aba-0989bd8d1cc5'].action).to.equal("None_Upgrade");
-      });
-    });
-
-    it(`Upgrade a VFModule, Negative - latest version doesn't exist, upgrade button shouldn't exist`, function(){
-      setLatestVersionMockToEmptyResponse(serviceInvariantId);
-      cy.initDrawingBoardUserPermission();
-      initServicePlanning("EDIT",
-        '../vid-automation/src/test/resources/viewEdit/ServiceTreeWithMultipleChildren_serviceInstance_withUpdatedLatestVersion.json');
-      verifyMenuActionUpgradeDoesNotExist();
-    });
-
   });
 
-  function mockAsyncBulkResponse() {
-    cy.server().route({
-      url: Cypress.config('baseUrl') + '/asyncInstantiation/bulk',
-      method: 'POST',
-      status: 200,
-      response: "[]",
-    }).as("expectedPostAsyncInstantiation");
-  }
-
-  function verifyMenuActionUpgradeDoesNotExist() {
-    cy.getElementByDataTestsId('node-undefined-dc229cd8-c132-4455-8517-5c1787c18b14-menu-btn').click()
-      .getElementByDataTestsId('context-menu-upgrade').should('not.exist');
-  }
-
-  function setLatestVersionMockToEmptyResponse(serviceUuid :string){
-    cy.server().route({
-      url: Cypress.config('baseUrl') + '/aai_get_newest_model_version_by_invariant/' + serviceUuid,
-      method: 'GET',
-      status: 200,
-      response: {},
-    }).as("expectLatestServiceModelUpgradeVersion")
-  }
-
-  function upgradeTheVFM() :Chainable<any>{
-    return cy.getElementByDataTestsId('node-undefined-dc229cd8-c132-4455-8517-5c1787c18b14-menu-btn').click()
-      .drawingBoardTreeClickOnContextMenuOptionByName("Upgrade");
-  }
-
-  function undoUpgradeForVFM() {
-    cy.getElementByDataTestsId('node-undefined-dc229cd8-c132-4455-8517-5c1787c18b14-menu-btn').click()
-      .drawingBoardTreeClickOnContextMenuOptionByName("Undo Upgrade");
-  }
-
   function changeFabric(serviceModel: ServiceModel) {
     serviceModel.service.uuid = "6e59c5de-f052-46fa-aa7e-2fca9d671234";
     return serviceModel;
@@ -282,326 +208,6 @@
 
   function changeServiceModel(serviceModel: ServiceModel) {
     serviceModel.service.uuid = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
-    serviceModel.vnfs = {
-      "VF_vGeraldine 0": {
-        "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
-        "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
-        "description": "VSP_vGeraldine",
-        "name": "VF_vGeraldine",
-        "version": "2.0",
-        "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
-        "inputs": {},
-        "commands": {},
-        "properties": {
-          "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
-          "sctp-b-ipv6-egress_src_start_port": "0",
-          "sctp-a-ipv6-egress_rule_application": "any",
-          "Internal2_allow_transit": "true",
-          "sctp-b-IPv6_ethertype": "IPv6",
-          "sctp-a-egress_rule_application": "any",
-          "sctp-b-ingress_action": "pass",
-          "sctp-b-ingress_rule_protocol": "icmp",
-          "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
-          "sctp-b-ipv6-ingress-src_start_port": "0.0",
-          "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
-          "fsb_volume_size_0": "320.0",
-          "sctp-b-egress_src_addresses": "local",
-          "sctp-a-ipv6-ingress_ethertype": "IPv4",
-          "sctp-a-ipv6-ingress-dst_start_port": "0",
-          "sctp-b-ipv6-ingress_rule_application": "any",
-          "domain_name": "default-domain",
-          "sctp-a-ingress_rule_protocol": "icmp",
-          "sctp-b-egress-src_start_port": "0.0",
-          "sctp-a-egress_src_addresses": "local",
-          "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
-          "sctp-a-egress-src_start_port": "0.0",
-          "sctp-a-ingress_ethertype": "IPv4",
-          "sctp-b-ipv6-ingress-dst_end_port": "65535",
-          "sctp-b-dst_subnet_prefix_v6": "::",
-          "nf_naming": "{ecomp_generated_naming=true}",
-          "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
-          "sctp-b-egress-dst_start_port": "0.0",
-          "ncb_flavor_name": "nv.c20r64d1",
-          "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
-          "sctp-b-egress_dst_subnet_prefix_len": "0.0",
-          "Internal2_net_cidr": "10.0.0.10",
-          "sctp-a-ingress-dst_start_port": "0.0",
-          "sctp-a-egress-dst_start_port": "0.0",
-          "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
-          "sctp-a-egress_ethertype": "IPv4",
-          "vlc_st_service_mode": "in-network-nat",
-          "sctp-a-ipv6-egress_ethertype": "IPv4",
-          "sctp-a-egress-src_end_port": "65535.0",
-          "sctp-b-ipv6-egress_rule_application": "any",
-          "sctp-b-egress_action": "pass",
-          "sctp-a-ingress-src_subnet_prefix_len": "0.0",
-          "sctp-b-ipv6-ingress-src_end_port": "65535.0",
-          "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
-          "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
-          "sctp-a-ipv6-ingress-src_start_port": "0.0",
-          "sctp-b-ipv6-egress_ethertype": "IPv4",
-          "Internal1_net_cidr": "10.0.0.10",
-          "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
-          "fsb_flavor_name": "nv.c20r64d1",
-          "sctp_rule_protocol": "132",
-          "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
-          "sctp-a-ipv6-ingress_rule_application": "any",
-          "ecomp_generated_naming": "true",
-          "sctp-a-IPv6_ethertype": "IPv6",
-          "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
-          "vlc_st_virtualization_type": "virtual-machine",
-          "sctp-b-ingress-dst_start_port": "0.0",
-          "sctp-b-ingress-dst_end_port": "65535.0",
-          "sctp-a-ipv6-ingress-src_end_port": "65535.0",
-          "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
-          "sctp-b-ingress_rule_application": "any",
-          "int2_sec_group_name": "int2-sec-group",
-          "vlc_flavor_name": "nd.c16r64d1",
-          "sctp-b-ipv6-egress_src_addresses": "local",
-          "vlc_st_interface_type_int1": "other1",
-          "sctp-b-egress-src_end_port": "65535.0",
-          "sctp-a-ipv6-egress-dst_start_port": "0",
-          "vlc_st_interface_type_int2": "other2",
-          "sctp-a-ipv6-egress_rule_protocol": "any",
-          "Internal2_shared": "false",
-          "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
-          "Internal2_rpf": "disable",
-          "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
-          "sctp-b-ipv6-egress_src_end_port": "65535",
-          "sctp-a-ipv6-egress_src_addresses": "local",
-          "sctp-a-ingress-dst_end_port": "65535.0",
-          "sctp-a-ipv6-egress_src_end_port": "65535",
-          "Internal1_forwarding_mode": "l2",
-          "Internal2_dhcp": "false",
-          "sctp-a-dst_subnet_prefix_v6": "::",
-          "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
-          "vlc_st_interface_type_gtp": "other0",
-          "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
-          "sctp-b-src_subnet_prefix_v6": "::",
-          "sctp-a-egress_dst_subnet_prefix_len": "0.0",
-          "int1_sec_group_name": "int1-sec-group",
-          "Internal1_dhcp": "false",
-          "sctp-a-ipv6-egress_dst_end_port": "65535",
-          "Internal2_forwarding_mode": "l2",
-          "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
-          "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
-          "Internal1_net_cidr_len": "17",
-          "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
-          "sctp-b-ingress-src_subnet_prefix_len": "0.0",
-          "sctp-a-ingress_dst_addresses": "local",
-          "sctp-a-egress_action": "pass",
-          "fsb_volume_type_0": "SF-Default-SSD",
-          "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
-          "vlc_st_interface_type_sctp_a": "left",
-          "vlc_st_interface_type_sctp_b": "right",
-          "sctp-a-src_subnet_prefix_v6": "::",
-          "vlc_st_version": "2",
-          "sctp-b-egress_ethertype": "IPv4",
-          "sctp-a-ingress_rule_application": "any",
-          "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
-          "instance_ip_family_v6": "v6",
-          "sctp-a-ipv6-egress_src_start_port": "0",
-          "sctp-b-ingress-src_start_port": "0.0",
-          "sctp-b-ingress_dst_addresses": "local",
-          "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
-          "vlc_st_interface_type_oam": "management",
-          "multi_stage_design": "false",
-          "oam_sec_group_name": "oam-sec-group",
-          "Internal2_net_gateway": "10.0.0.10",
-          "sctp-a-ipv6-ingress-dst_end_port": "65535",
-          "sctp-b-ipv6-egress-dst_start_port": "0",
-          "Internal1_net_gateway": "10.0.0.10",
-          "sctp-b-ipv6-egress_rule_protocol": "any",
-          "gtp_sec_group_name": "gtp-sec-group",
-          "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
-          "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
-          "sctp-a-ipv6-ingress_dst_addresses": "local",
-          "sctp-a-egress_rule_protocol": "icmp",
-          "sctp-b-ipv6-egress_action": "pass",
-          "sctp-a-ipv6-egress_action": "pass",
-          "Internal1_shared": "false",
-          "sctp-b-ipv6-ingress_rule_protocol": "any",
-          "Internal2_net_cidr_len": "17",
-          "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
-          "sctp-a-ingress-src_end_port": "65535.0",
-          "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
-          "sctp-a-egress-dst_end_port": "65535.0",
-          "sctp-a-ingress_action": "pass",
-          "sctp-b-egress_rule_protocol": "icmp",
-          "sctp-b-ipv6-ingress_action": "pass",
-          "vlc_st_service_type": "firewall",
-          "sctp-b-ipv6-egress_dst_end_port": "65535",
-          "sctp-b-ipv6-ingress-dst_start_port": "0",
-          "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
-          "vlc_st_availability_zone": "true",
-          "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
-          "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
-          "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
-          "Internal1_allow_transit": "true",
-          "gpb_flavor_name": "nv.c20r64d1",
-          "availability_zone_max_count": "1",
-          "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
-          "sctp-b-ipv6-ingress_dst_addresses": "local",
-          "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
-          "sctp-b-ipv6-ingress_ethertype": "IPv4",
-          "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
-          "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
-          "sctp-a-ipv6-ingress_action": "pass",
-          "Internal1_rpf": "disable",
-          "sctp-b-ingress_ethertype": "IPv4",
-          "sctp-b-egress_rule_application": "any",
-          "sctp-b-ingress-src_end_port": "65535.0",
-          "sctp-a-ipv6-ingress_rule_protocol": "any",
-          "sctp-a-ingress-src_start_port": "0.0",
-          "sctp-b-egress-dst_end_port": "65535.0"
-        },
-        "type": "VF",
-        "modelCustomizationName": "VF_vGeraldine 0",
-        "vfModules": {
-          "vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1": {
-            "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
-            "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
-            "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
-            "description": null,
-            "name": "VfVgeraldine..vflorence_vlc..module-1",
-            "version": "2",
-            "modelCustomizationName": "VfVgeraldine..vflorence_vlc..module-1",
-            "properties": {
-              "minCountInstances": 0,
-              "maxCountInstances": null,
-              "initialCount": 0,
-              "vfModuleLabel": "vflorence_vlc"
-            },
-            "inputs": {},
-            "volumeGroupAllowed": false
-          },
-          "vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2": {
-            "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
-            "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
-            "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
-            "description": null,
-            "name": "VfVgeraldine..vflorence_gpb..module-2",
-            "version": "2",
-            "modelCustomizationName": "VfVgeraldine..vflorence_gpb..module-2",
-            "properties": {
-              "minCountInstances": 0,
-              "maxCountInstances": null,
-              "initialCount": 0,
-              "vfModuleLabel": "vflorence_gpb"
-            },
-            "inputs": {},
-            "volumeGroupAllowed": false
-          },
-          "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0": {
-            "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
-            "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
-            "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
-            "description": null,
-            "name": "VfVgeraldine..base_vflorence..module-0",
-            "version": "2",
-            "modelCustomizationName": "VfVgeraldine..base_vflorence..module-0",
-            "properties": {
-              "minCountInstances": 1,
-              "maxCountInstances": 1,
-              "initialCount": 1,
-              "vfModuleLabel": "base_vflorence"
-            },
-            "inputs": {},
-            "volumeGroupAllowed": true
-          }
-        },
-        "volumeGroups": {
-          "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0": {
-            "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
-            "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
-            "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
-            "description": null,
-            "name": "VfVgeraldine..base_vflorence..module-0",
-            "version": "2",
-            "modelCustomizationName": "VfVgeraldine..base_vflorence..module-0",
-            "properties": {
-              "minCountInstances": 1,
-              "maxCountInstances": 1,
-              "initialCount": 1,
-              "vfModuleLabel": "base_vflorence"
-            },
-            "inputs": {}
-          }
-        },
-        "vfcInstanceGroups": {}
-      }
-    };
-    serviceModel.vfModules = {
-      "vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1": {
-        "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
-        "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
-        "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
-        "description": null,
-        "name": "VfVgeraldine..vflorence_vlc..module-1",
-        "version": "2",
-        "modelCustomizationName": "VfVgeraldine..vflorence_vlc..module-1",
-        "properties": {
-          "minCountInstances": 0,
-          "maxCountInstances": null,
-          "initialCount": 0,
-          "vfModuleLabel": "vflorence_vlc"
-        },
-        "inputs": {},
-        "volumeGroupAllowed": false
-      },
-      "vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2": {
-        "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
-        "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
-        "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
-        "description": null,
-        "name": "VfVgeraldine..vflorence_gpb..module-2",
-        "version": "2",
-        "modelCustomizationName": "VfVgeraldine..vflorence_gpb..module-2",
-        "properties": {
-          "minCountInstances": 0,
-          "maxCountInstances": null,
-          "initialCount": 0,
-          "vfModuleLabel": "vflorence_gpb"
-        },
-        "inputs": {},
-        "volumeGroupAllowed": false
-      },
-      "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0": {
-        "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
-        "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
-        "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
-        "description": null,
-        "name": "VfVgeraldine..base_vflorence..module-0",
-        "version": "2",
-        "modelCustomizationName": "VfVgeraldine..base_vflorence..module-0",
-        "properties": {
-          "minCountInstances": 1,
-          "maxCountInstances": 1,
-          "initialCount": 1,
-          "vfModuleLabel": "base_vflorence"
-        },
-        "inputs": {},
-        "volumeGroupAllowed": true
-      }
-    };
-    serviceModel.volumeGroups = {
-      "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0": {
-        "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
-        "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
-        "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
-        "description": null,
-        "name": "VfVgeraldine..base_vflorence..module-0",
-        "version": "2",
-        "modelCustomizationName": "VfVgeraldine..base_vflorence..module-0",
-        "properties": {
-          "minCountInstances": 1,
-          "maxCountInstances": 1,
-          "initialCount": 1,
-          "vfModuleLabel": "base_vflorence"
-        },
-        "inputs": {}
-      }
-    };
     return serviceModel;
   }
 });
diff --git a/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
new file mode 100644
index 0000000..bea31fc
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
@@ -0,0 +1,166 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/> / <reference types="Cypress" />
+import {JsonBuilder} from '../../support/jsonBuilders/jsonBuilder';
+import {ServiceModel} from '../../support/jsonBuilders/models/service.model';
+import {AaiServiceInstancesModel} from '../../support/jsonBuilders/models/serviceInstances.model';
+import {AAISubViewEditModel} from '../../support/jsonBuilders/models/aaiSubViewEdit.model';
+
+const jsonBuilderAndMock: JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
+const SUBSCRIBER_ID = "e433710f-9217-458d-a79d-1c7aff376d89";
+const SERVICE_MODEL_ID: string = '6e59c5de-f052-46fa-aa7e-2fca9d674c44';
+
+export const initServicePlanning = function (viewOrEdit: string, customModelFilePath?: string) {
+  const SERVICE_TYPE: string = "TYLER SILVIA";
+  const SERVICE_INSTANCE_ID: string = "f8791436-8d55-4fde-b4d5-72dd2cf13cfb";
+  if (Cypress._.isNil(customModelFilePath)) {
+    customModelFilePath = '../vid-automation/src/test/resources/aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json';
+  }
+
+  cy.readFile('../vid-automation/src/test/resources/aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceModel.json').then((res) => {
+    jsonBuilderAndMock.basicJson(
+      res,
+      Cypress.config('baseUrl') + "/rest/models/services/6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+      200,
+      0,
+      "ServiceTreeWithMultipleChildren_serviceModel",
+    )
+  });
+
+  cy.readFile(customModelFilePath).then((res) => {
+    jsonBuilderAndMock.basicJson(
+      res,
+      Cypress.config('baseUrl') + "/aai_get_service_instance_topology/e433710f-9217-458d-a79d-1c7aff376d89/TYLER SILVIA/f8791436-8d55-4fde-b4d5-72dd2cf13cfb",
+      200, 0,
+      "ServiceTreeWithMultipleChildren_serviceInstance",
+    );
+  });
+  cy.openIframe(`app/ui/#/servicePlanning/${viewOrEdit}?serviceModelId=${SERVICE_MODEL_ID}&subscriberId=${SUBSCRIBER_ID}&serviceType=${SERVICE_TYPE}&serviceInstanceId=${SERVICE_INSTANCE_ID}`);
+};
+
+
+describe('View Edit Page: Upgrade VFModule', function () {
+  describe('basic UI tests', () => {
+    let serviceUuid = SERVICE_MODEL_ID;
+    let serviceInvariantId = "d27e42cf-087e-4d31-88ac-6c4b7585f800";
+
+    let jsonBuilderAAIService: JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
+    let jsonBuilderAAISubViewEditModel: JsonBuilder<AAISubViewEditModel> = new JsonBuilder<AAISubViewEditModel>();
+    let jsonBuilderAaiServiceInstances: JsonBuilder<AaiServiceInstancesModel> = new JsonBuilder<AaiServiceInstancesModel>();
+
+    beforeEach(() => {
+      cy.window().then((win) => {
+        win.sessionStorage.clear();
+      });
+      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/basicService.json').then((res) => {
+        jsonBuilderAAIService.basicJson(
+          res,
+          Cypress.config('baseUrl') + "/rest/models/services/" + serviceUuid,
+          200, 0,
+          "service-complexService",
+          changeServiceModel)
+      });
+
+      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/aaiSubViewEditForComplexService.json').then((res) => {
+        jsonBuilderAAISubViewEditModel.basicJson(
+          res,
+          Cypress.config('baseUrl') + "/aai_sub_viewedit/**/**/**/3f93c7cb-2fd0-4557-9514-e189b7b04f9d",
+          200,
+          0,
+          "aai-sub-view-edit")
+      });
+
+      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/aaiServiceInstances.json').then((res) => {
+        jsonBuilderAaiServiceInstances.basicJson(
+          res,
+          Cypress.config('baseUrl') + "/search_service_instances**",
+          200,
+          0,
+          "aai-get-service-instances")
+      });
+
+      mockAsyncBulkResponse();
+      cy.initGetAAISubDetails();
+      cy.initVidMock({serviceUuid: serviceUuid, invariantId: serviceInvariantId});
+      cy.setReduxState();
+      cy.permissionVidMock();
+      cy.login();
+    });
+
+    afterEach(() => {
+      cy.screenshot();
+    });
+
+    it(`should display the more actions button if user is permitted`, function () {
+      let SERVICE_INSTANCE_ID="3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
+      let SERVICE_TYPE="VIRTUAL%20USP";
+      cy.visit(`/serviceModels.htm#/instantiate?subscriberId=${SUBSCRIBER_ID}&subscriberName=USP%20VOICE&serviceType=${SERVICE_TYPE}&serviceInstanceId=${SERVICE_INSTANCE_ID}&aaiModelVersionId=${serviceUuid}&isPermitted=true`);
+
+      cy.get("[data-tests-id='service-instanceId-th-id']").should('contain', SERVICE_INSTANCE_ID);
+      cy.getElementByDataTestsId("show-new-screen").should('be.visible').should('have.text', 'More actions').click();
+
+      cy.url().should('contain',
+        `servicePlanning/EDIT?serviceModelId=${serviceUuid}&subscriberId=${SUBSCRIBER_ID}&serviceType=${SERVICE_TYPE}&serviceInstanceId=${SERVICE_INSTANCE_ID}`);
+    });
+
+    it(`Upgrade a VFModule`, function () {
+      cy.initDrawingBoardUserPermission();
+      initServicePlanning("EDIT",
+        '../vid-automation/src/test/resources/viewEdit/ServiceTreeWithMultipleChildren_serviceInstance_withUpdatedLatestVersion.json');
+      upgradeTheVFM();
+      undoUpgradeForVFM();
+      upgradeTheVFM();
+      cy.getDrawingBoardDeployBtn().click();
+      cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
+        expect(Object(xhr.request.body).action).to.equal("None_Upgrade");
+        expect(Object(xhr.request.body).vnfs['VNF2_INSTANCE_ID'].action).to.equal("None_Upgrade");
+        expect(Object(xhr.request.body).vnfs['VNF2_INSTANCE_ID'].vfModules['dc229cd8-c132-4455-8517-5c1787c18b14']['3ef042c4-259f-45e0-9aba-0989bd8d1cc5'].action).to.equal("None_Upgrade");
+      });
+    });
+
+    it(`Upgrade a VFModule, Negative - latest version doesn't exist, upgrade button shouldn't exist`, function () {
+      setLatestVersionMockToEmptyResponse(serviceInvariantId);
+      cy.initDrawingBoardUserPermission();
+      initServicePlanning("EDIT",
+        '../vid-automation/src/test/resources/viewEdit/ServiceTreeWithMultipleChildren_serviceInstance_withUpdatedLatestVersion.json');
+      verifyMenuActionUpgradeDoesNotExist();
+    });
+
+  });
+
+  function mockAsyncBulkResponse() {
+    cy.server().route({
+      url: Cypress.config('baseUrl') + '/asyncInstantiation/bulk',
+      method: 'POST',
+      status: 200,
+      response: "[]",
+    }).as("expectedPostAsyncInstantiation");
+  }
+
+  function verifyMenuActionUpgradeDoesNotExist() {
+    cy.getElementByDataTestsId('node-undefined-dc229cd8-c132-4455-8517-5c1787c18b14-menu-btn').click()
+    .getElementByDataTestsId('context-menu-upgrade').should('not.exist');
+  }
+
+  function setLatestVersionMockToEmptyResponse(serviceUuid: string) {
+    cy.server().route({
+      url: Cypress.config('baseUrl') + '/aai_get_newest_model_version_by_invariant/' + serviceUuid,
+      method: 'GET',
+      status: 200,
+      response: {},
+    }).as("expectLatestServiceModelUpgradeVersion")
+  }
+
+  function upgradeTheVFM(): Chainable<any> {
+    return cy.getElementByDataTestsId('node-undefined-dc229cd8-c132-4455-8517-5c1787c18b14-menu-btn').click()
+    .drawingBoardTreeClickOnContextMenuOptionByName("Upgrade");
+  }
+
+  function undoUpgradeForVFM() {
+    cy.getElementByDataTestsId('node-undefined-dc229cd8-c132-4455-8517-5c1787c18b14-menu-btn').click()
+    .drawingBoardTreeClickOnContextMenuOptionByName("Undo Upgrade");
+  }
+
+  function changeServiceModel(serviceModel: ServiceModel) {
+    serviceModel.service.uuid = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+    return serviceModel;
+  }
+});
diff --git a/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts b/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts
index 669db05..3e6d5e3 100644
--- a/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts
+++ b/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts
@@ -7,6 +7,7 @@
     initSearchVNFMemebers : typeof  initSearchVNFMemebers;
     initActiveNetworks : typeof  initActiveNetworks;
     initActiveVPNs : typeof  initActiveVPNs;
+    initGetAAISubDetails : typeof  initGetAAISubDetails;
   }
 }
 
@@ -40,9 +41,9 @@
       .route({
         method: 'GET',
         status: 200,
-        url: Cypress.config('baseUrl') + "/aai_sub_details**",
+        url: Cypress.config('baseUrl') + "/aai_sub_details/**",
         response: response ? response : res
-      })
+      }).as('aai-sub-details')
   });
 }
 
@@ -149,6 +150,7 @@
 Cypress.Commands.add('initZones', initZones);
 Cypress.Commands.add('initTenants', initTenants);
 Cypress.Commands.add('initAaiGetFullSubscribers', initAaiGetFullSubscribers);
+Cypress.Commands.add('initGetAAISubDetails', initGetAAISubDetails);
 Cypress.Commands.add('initSearchVNFMemebers', initSearchVNFMemebers);
 Cypress.Commands.add('initActiveNetworks', initActiveNetworks);
 Cypress.Commands.add('initActiveVPNs', initActiveVPNs);