Merge "Add another Network to the new view/edit screen"
[vid.git] / vid-webpack-master / cypress / integration / iFrames / viewEditAddNewInstace.e2e.ts
1 ///<reference path="../../../node_modules/cypress/types/index.d.ts"/> / <reference types="Cypress" />
2
3
4 import {JsonBuilder} from "../../support/jsonBuilders/jsonBuilder";
5 import {ServiceModel} from "../../support/jsonBuilders/models/service.model";
6 import {AaiServiceInstancesModel} from "../../support/jsonBuilders/models/serviceInstances.model";
7 import {AAISubViewEditModel} from "../../support/jsonBuilders/models/aaiSubViewEdit.model";
8
9 const jsonBuilderAndMock: JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
10 let jsonBuilderAAIService: JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
11 let jsonBuilderAaiServiceInstances: JsonBuilder<AaiServiceInstancesModel> = new JsonBuilder<AaiServiceInstancesModel>();
12 let jsonBuilderAAISubViewEditModel: JsonBuilder<AAISubViewEditModel> = new JsonBuilder<AAISubViewEditModel>();
13
14
15 describe('View Edit page: Add a second instance', () =>{
16   beforeEach(() => {
17     cy.clearSessionStorage();
18     cy.initGetAAISubDetails();
19     cy.initAAIServices();
20     cy.initTenants();
21     cy.setTestApiParamToGR();
22     cy.initVidMock();
23     cy.login();
24
25   });
26
27   afterEach(() => {
28     cy.screenshot();
29   });
30
31   it(`Add new network to service with one existing network `, () =>{
32     const serviceType = 'Emanuel';
33     const subscriberId = 'a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb';
34     const serviceModelId = 'f93e72e1-77fc-4f54-b207-298d766d0886';
35     const serviceInstanceId = 'ce2821fc-3b28-4759-9613-1e514d7563c0';
36
37     cy.initDrawingBoardUserPermission();
38     cy.route(`**/rest/models/services/${serviceModelId}`,
39       'fixture:../support/jsonBuilders/mocks/jsons/add_Network/add_network_model.json')
40     .as('serviceModelAddNetwork');
41
42     cy.route(`**/aai_get_service_instance_topology/${subscriberId}/${serviceType}/${serviceInstanceId}`,
43       'fixture:../support/jsonBuilders/mocks/jsons/add_Network/add_network_instance.json')
44     .as('serviceInstanceAddNetwork');
45
46     cy.openIframe(`app/ui/#/servicePlanning/EDIT?serviceModelId=${serviceModelId}&subscriberId=${subscriberId}&serviceType=${serviceType}&serviceInstanceId=${serviceInstanceId}`);
47
48     cy.getElementByDataTestsId('node-OVS Provider-add-btn').click({force: true}).then(() => {
49
50       cy.fillNetworkPopup();
51     });
52
53     mockAsyncBulkResponse();
54     //click update
55     cy.getElementByDataTestsId('deployBtn').should('have.text', 'UPDATE').click();
56
57     cy.getReduxState().then((state) => {
58
59       const networks = state.service.serviceInstance['f93e72e1-77fc-4f54-b207-298d766d0886'].networks;
60       cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
61         cy.readFile('../vid-app-common/src/test/resources/payload_jsons/Network/one_network_exists_add_another_network_expected_bulk.json').then((expectedResult) => {
62
63           //set randomized trackById into bulk expected file
64           expectedResult.networks['OVS Provider'].trackById = networks['OVS Provider'].trackById;
65
66           cy.deepCompare(xhr.request.body, expectedResult);
67         });
68       });
69     });
70
71   });
72
73   it(`Add new VNF to service with one existing VNF `, () =>{
74     const serviceType = 'Mobility';
75     const subscriberId = 'a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb';
76     const serviceModelId = '82255513-e19f-46e5-bdfb-957c6bf57b82';
77     const serviceInstanceId = 'e6cc1c4f-05f7-49bc-8e86-ac2eb92baaaa';
78
79     cy.initDrawingBoardUserPermission();
80     cy.route(`**/rest/models/services/${serviceModelId}`,
81       'fixture:../support/jsonBuilders/mocks/jsons/add_vnf/add_vnf_model.json')
82     .as('serviceModelAddVnf');
83
84     cy.route(`**/aai_get_service_instance_topology/${subscriberId}/${serviceType}/${serviceInstanceId}`,
85       'fixture:../support/jsonBuilders/mocks/jsons/add_vnf/add_vnf_instance.json')
86     .as('serviceInstanceAddVnf');
87
88     cy.openIframe(`app/ui/#/servicePlanning/EDIT?serviceModelId=${serviceModelId}&subscriberId=${subscriberId}&serviceType=${serviceType}&serviceInstanceId=${serviceInstanceId}`);
89
90     cy.getElementByDataTestsId('node-iperf_vnf_2002_by5924 0-add-btn').click({force: true}).then(() => {
91
92       cy.fillVnfPopup();
93     });
94
95     mockAsyncBulkResponse();
96     // click update
97     cy.getElementByDataTestsId('deployBtn').should('have.text', 'UPDATE').click();
98
99     cy.getReduxState().then((state) => {
100
101       const vnfs = state.service.serviceInstance['82255513-e19f-46e5-bdfb-957c6bf57b82'].vnfs;
102       cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
103         cy.readFile('../vid-app-common/src/test/resources/payload_jsons/vnf/one_vnf_exists_add_another_vnf_expected_bulk.json').then((expectedResult) => {
104
105           //set randomized trackById into bulk expected file
106           expectedResult.vnfs['iperf_vnf_2002_by5924 0'].trackById = vnfs['iperf_vnf_2002_by5924 0'].trackById;
107
108           cy.deepCompare(xhr.request.body, expectedResult);
109         });
110       });
111     });
112
113   });
114
115
116   function mockAsyncBulkResponse() {
117     cy.server().route({
118       url: Cypress.config('baseUrl') + '/asyncInstantiation/bulk',
119       method: 'POST',
120       status: 200,
121       response: "[]",
122     }).as("expectedPostAsyncInstantiation");
123   }
124
125 });