Add new network after loading a template - cypress test
[vid.git] / vid-webpack-master / cypress / integration / iFrames / instantiation-templates.e2e.ts
index a73576d..5afcc97 100644 (file)
@@ -155,7 +155,7 @@ describe('Drawing Board: Instantiation Templates', function () {
             ...vnfPath, "vfModules", module1CustomizationId,
           ];
 
-          let serviceInstanceElementOnRedux = state.service.serviceInstance[serviceModelId];
+          let serviceInstanceElementOnRedux = state.service.serviceInstance[(templateWithVnfSetup.serviceModelId)];
           let latestVfModule_1Path = findPathOfLatestVfModule(serviceInstanceElementOnRedux, vfModules_1Path);
 
           // This is a funny merge, as values are already there, but that way ensures
@@ -182,6 +182,21 @@ describe('Drawing Board: Instantiation Templates', function () {
 
       });
 
+      it('Given a template - User can remove existing vfmodule', function () {
+
+        loadDrawingBoardWithRecreateMode();
+        nodeAction('node-c09e4530-8fd8-418f-9483-2f57ce927b05-vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1', 'Remove');
+        let removed_vfModule_Path = [
+          ...vnfPath, "vfModules",
+          "vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1",
+        ];
+
+        assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd([
+          {path: [...vnfPath, "vnfStoreKey"], value: "vProbe_NC_VNF 0"}, // side-effect
+          {path: [...removed_vfModule_Path], value: undefined},
+        ]);
+      });
+
       [
         {desc: "with changes", modifySomeValues: true},
         {desc: "without changes", modifySomeValues: false},
@@ -236,34 +251,111 @@ describe('Drawing Board: Instantiation Templates', function () {
 
       });
 
+      it(`Given a stored template of Network - - it is loaded`,  () => {
+
+        loadDrawingBoardWithRecreateModeNetwork();
+
+        // Then...
+        cy.getElementByDataTestsId("node-SR-IOV Provider 2-1").should('be.visible');
+        cy.getElementByDataTestsId("node-SR-IOV Provider 2-2").should('be.visible');
+        assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd_network();
+      });
+
+      it(`Given a stored template of Network - User can remove existing network`,  () => {
+
+        loadDrawingBoardWithRecreateModeNetwork();
+
+        nodeAction('node-01f4c475-3f89-4f00-a2f4-39a873dba0ae-SR-IOV Provider 2-1', 'Remove');
+        let removed_network_Path = [
+          "networks", "SR-IOV Provider 2-1",
+        ];
+
+        let removed_network_counter_Path = [
+          "existingNetworksCounterMap", "f6b6d141-0d4c-427d-ad35-797f3d1abe71",
+        ];
+
+        assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd_network([
+          {path: removed_network_Path, value: undefined},
+          {path: removed_network_counter_Path, value: 0},
+        ]);
+      });
+
+      it('Given a template - User can add a new network', () => {
+
+        loadDrawingBoardWithRecreateModeNetwork();
+
+        // add new node
+        addNewNode('node-SR-IOV Provider 2-1-add-btn')
+        .fillNetworkPopup()
+        .getDrawingBoardDeployBtn().click()
+        .wait('@expectedPostAsyncInstantiation').then(xhr => {
+          const networkRequest = bodyOf(xhr).networks['SR-IOV Provider 2-1_1'];
+
+          expect(networkRequest.action).equals("Create");
+          expect(networkRequest.rollbackOnFailure).equals("true");
+          expect(networkRequest.originalName).equals("SR-IOV Provider 2-1");
+          expect(networkRequest.productFamilyId).equals("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+          expect(networkRequest.lcpCloudRegionId).equals("hvf6");
+          expect(networkRequest.lineOfBusiness).equals("zzz1");
+          expect(networkRequest.platformName).equals("xxx1");
+          expect(networkRequest.tenantId).equals("229bcdc6eaeb4ca59d55221141d01f8e");
+        });
+      });
     });
   });
 });
 
-const serviceModelId = '6cfeeb18-c2b0-49df-987a-da47493c8e38';
+let apiTestResources = '../vid-automation/src/test/resources/asyncInstantiation/';
+
+const templateWithVnfSetup = {
+  serviceModelId: '6cfeeb18-c2b0-49df-987a-da47493c8e38',
+  instanceTemplateFile: apiTestResources + 'templates__instance_template.json',
+  instanceTemplateSetWithoutModifyFile: apiTestResources + 'templates__instance_from_template__set_without_modify1.json',
+  serviceModelFile: '../support/jsonBuilders/mocks/jsons/instantiationTemplates/templates__service_model.json',
+};
+
+const templateWithNetworkSetup = {
+  serviceModelId: 'a1a14610-ee40-4049-8007-0608a20dd1fa',
+  instanceTemplateFile: apiTestResources + 'templates__instance_template_network.json',
+  serviceModelFile: '../support/jsonBuilders/mocks/jsons/instantiationTemplates/templates__service_model_network.json',
+};
 
 const vnfPath = [
   "vnfs", "vProbe_NC_VNF 0"
 ];
 
 function loadDrawingBoardWithRecreateMode() {
+  loadDrawingBoardWithRecreateModeInternal(
+    '../../' + templateWithVnfSetup.instanceTemplateFile,
+    templateWithVnfSetup.serviceModelId,
+    templateWithVnfSetup.serviceModelFile);
+}
+
+function loadDrawingBoardWithRecreateModeNetwork() {
+  loadDrawingBoardWithRecreateModeInternal(
+    '../../' + templateWithNetworkSetup.instanceTemplateFile,
+    templateWithNetworkSetup.serviceModelId,
+    templateWithNetworkSetup.serviceModelFile);
+}
+
+function loadDrawingBoardWithRecreateModeInternal(instanceTemplate: string, serviceModelIdToLoad: any, serviceModel: string) {
   const templateUuid = "46390edd-7100-46b2-9f18-419bd24fb60b";
 
   const drawingBoardAction = `RECREATE`;
   const templateTopologyEndpoint = "templateTopology";
-  cy.route(`**/rest/models/services/${serviceModelId}`,
-    'fixture:../support/jsonBuilders/mocks/jsons/instantiationTemplates/templates__service_model.json')
+  cy.route(`**/rest/models/services/${serviceModelIdToLoad}`,
+    'fixture:' + serviceModel)
     .as('serviceModel');
 
   cy.route(`**/instantiationTemplates/${templateTopologyEndpoint}/${templateUuid}`,
-    'fixture:../../../vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json')
+    'fixture:' + instanceTemplate)
     .as('templateTopology');
 
   // When...
 
   cy.openIframe(`app/ui/#/servicePlanning/${drawingBoardAction}` +
     `?jobId=${templateUuid}` +
-    `&serviceModelId=${serviceModelId}`);
+    `&serviceModelId=${serviceModelIdToLoad}`);
 
   cy.wait('@serviceModel');
   cy.wait('@templateTopology');
@@ -288,9 +380,17 @@ function removeVNFWithVFModules(dataTestId: string) {
 }
 
 function assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd(deviationFromExpected: { path: PropertyPath, value: any }[] = []) {
+  assertThatBodyFromDeployRequestEqualsToTemplateFromBackEndInternal(templateWithVnfSetup.instanceTemplateFile, deviationFromExpected);
+}
+
+function assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd_network(deviationFromExpected: { path: PropertyPath, value: any }[] = []) {
+  assertThatBodyFromDeployRequestEqualsToTemplateFromBackEndInternal(templateWithNetworkSetup.instanceTemplateFile, deviationFromExpected);
+}
+
+function assertThatBodyFromDeployRequestEqualsToTemplateFromBackEndInternal(filePathOfExpected: string, deviationFromExpected: { path: PropertyPath; value: any }[]) {
   cy.getDrawingBoardDeployBtn().click();
   cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
-    cy.readFile('../vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json').then((expectedResult) => {
+    cy.readFile(filePathOfExpected).then((expectedResult) => {
       convertRollbackOnFailureValueFromStringToBoolean(expectedResult);
 
       let xhrBodyWithoutIsDirtyField = removeIsDirtyFieldFromXhrRequestBody(xhr);
@@ -305,7 +405,7 @@ function assertThatBodyFromDeployRequestEqualsToFile(deviationFromExpected: { pa
   cy.getDrawingBoardDeployBtn().click();
   cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
 
-    cy.readFile('../vid-automation/src/test/resources/asyncInstantiation/templates__instance_from_template__set_without_modify1.json').then((expectedResult) => {
+    cy.readFile(templateWithVnfSetup.instanceTemplateSetWithoutModifyFile).then((expectedResult) => {
       setDeviationInExpected(expectedResult, deviationFromExpected);
       cy.deepCompare(xhr.request.body, expectedResult);
     });