cb400528a3ae502b8f8b4bb00895906279411d2c
[vid.git] / vid-webpack-master / cypress / integration / iFrames / changeManagement.e2e.ts
1 ///<reference path="../../../node_modules/cypress/types/index.d.ts"/> / <reference types="Cypress" />
2
3 import {JsonBuilder} from "../../support/jsonBuilders/jsonBuilder";
4 import {AAISubDetailsModel} from "../../support/jsonBuilders/models/aaiSubDetails.model";
5
6 function stubSubscriberDetails() {
7   let jsonBuilderAAISubDetailsModel: JsonBuilder<AAISubDetailsModel> = new JsonBuilder<AAISubDetailsModel>();
8   cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiSubDetailsE2E.json').then((res) => {
9     jsonBuilderAAISubDetailsModel.basicJson(
10       res,
11       Cypress.config('baseUrl') + "/aai_sub_details/e433710f-9217-458d-a79d-1c7aff376d89**",
12       200,
13       0,
14       "aai-sub-details")
15   });
16 }
17
18 function openNewVnfChangeModal() {
19   cy.visit('/serviceModels.htm#/change-management');
20   cy.getElementByDataTestsId('create-new-change-management').click();
21   cy.getElementByDataTestsId('newChangeManagementForm');
22 }
23
24 function fillSubscriberAndServiceType() {
25   cy.selectDropdownOptionByText('subscriberName', 'SILVIA ROBBINS');
26   cy.selectDropdownOptionByText('serviceType', 'TYLER SILVIA');
27 }
28
29 describe('Change management AKA VNF changes', function () {
30   let jsonBuilderVnfData: JsonBuilder<any> = new JsonBuilder<any>();
31
32   let aaiGetVNFDataUrl = Cypress.config('baseUrl') + "/get_vnf_data_by_globalid_and_service_type/e433710f-9217-458d-a79d-1c7aff376d89/TYLER SILVIA";
33   //describe('Contact us', () => {
34
35   beforeEach(() => {
36     cy.login();
37     cy.initAAIMock();
38     stubSubscriberDetails();
39
40     cy.route(`${Cypress.config('baseUrl')}/flags`,
41       {
42         "FLAG_FLASH_REDUCED_RESPONSE_CHANGEMG": true,
43         "FLAG_FLASH_CLOUD_REGION_AND_NF_ROLE_OPTIONAL_SEARCH": true,
44         "FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST": true,
45       })
46     .as('initFlags');
47
48     cy.readFile('cypress/support/jsonBuilders/mocks/jsons/get_vnf_data.json').then((res) => {
49       jsonBuilderVnfData.basicJson(
50         res,
51         aaiGetVNFDataUrl + '**',
52         200,
53         0,
54         "aai_get_vnf_data")
55     });
56
57     openNewVnfChangeModal();
58
59   });
60
61   afterEach(() => {
62     cy.screenshot();
63   });
64
65   function fillCloudRegion() {
66     cy.selectDropdownOptionByText('cloudRegion', 'AAIAIC25 (AIC)');
67   }
68
69   function fillNfRole() {
70     cy.getElementByDataTestsId('vnfType').type('vMobileDNS');
71   }
72
73   it(`nf role input and cloud region input and search vnfs button should be disabled  without subscriber and serviceType`, function () {
74     cy.get('#searchVNF').should('be.disabled');
75     cy.getElementByDataTestsId('cloudRegion').should('be.disabled');
76     cy.getElementByDataTestsId('vnfType').should('be.disabled')
77   });
78
79   it(`search vnfs without nf role and cloud region`, function () {
80
81     fillSubscriberAndServiceType();
82
83     cy.get('#searchVNF').click();
84
85     cy.wait('@aai_get_vnf_data')
86       .its('url').should('equal', aaiGetVNFDataUrl)
87   });
88
89
90   it(`search vnfs by nf role and cloud region`, function () {
91
92     fillSubscriberAndServiceType();
93     fillNfRole();
94     fillCloudRegion();
95
96     cy.get('#searchVNF').click();
97
98     cy.wait('@aai_get_vnf_data')
99       .its('url').should('equal', aaiGetVNFDataUrl + "?cloudRegion=AAIAIC25&nfRole=vMobileDNS")
100   });
101
102
103   it(`search vnfs by cloud region`, function () {
104
105     fillSubscriberAndServiceType();
106     fillCloudRegion();
107     cy.get('#searchVNF').click();
108
109     cy.wait('@aai_get_vnf_data')
110     .its('url').should('equal', aaiGetVNFDataUrl + "?cloudRegion=AAIAIC25")
111   });
112
113   it(`search vnfs by nf role`, function () {
114
115     fillSubscriberAndServiceType();
116     fillNfRole();
117     cy.get('#searchVNF').click();
118
119     cy.wait('@aai_get_vnf_data')
120     .its('url').should('equal', aaiGetVNFDataUrl + "?nfRole=vMobileDNS")
121   });
122 });
123
124 describe('Change management AKA VNF changes with SO workflows', function () {
125   beforeEach(() => {
126     cy.login();
127     cy.initAAIMock();
128     stubSubscriberDetails();
129
130     cy.route(`${Cypress.config('baseUrl')}/flags**`,
131       {
132         "FLAG_FLASH_REDUCED_RESPONSE_CHANGEMG": true,
133         "FLAG_FLASH_CLOUD_REGION_AND_NF_ROLE_OPTIONAL_SEARCH": false,
134         "FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST": true,
135         "FLAG_HANDLE_SO_WORKFLOWS": true,
136         "FLAG_DISABLE_HOMING": true,
137         "FLAG_ADD_MSO_TESTAPI_FIELD": true,
138       })
139     .as('initFlags');
140
141     cy.route(`${Cypress.config('baseUrl')}/get_vnf_data_by_globalid_and_service_type/e433710f-9217-458d-a79d-1c7aff376d89/TYLER SILVIA`,
142       'fixture:../support/jsonBuilders/mocks/jsons/get_vnf_data_by_globalid_and_service_type.json')
143     .as('aai_get_vnf_data');
144
145     cy.route(`${Cypress.config('baseUrl')}/rest/models/services?distributionStatus=DISTRIBUTED`,
146       'fixture:../support/jsonBuilders/mocks/jsons/bug616888/list-services.json')
147     .as('list_services');
148
149     cy.route(`${Cypress.config('baseUrl')}/rest/models/services/74fa72dd-012b-49c3-800d-06b12bcaf1a0`,
150       'fixture:../support/jsonBuilders/mocks/jsons/bug616888/Dror_service1806_Macro1.json')
151     .as('get_service_model');
152
153     cy.route('POST', `${Cypress.config('baseUrl')}/aai_get_version_by_invariant_id`,
154       {
155         "model": [
156           {
157             "model-invariant-id": "e88d6582-b7e5-4dc6-ac9c-6f7130727a92",
158             "model-type": "resource",
159             "resource-version": "1507747452923",
160             "model-vers": {
161               "model-ver": [
162                 {
163                   "model-version-id": "1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d",
164                   "model-name": "092017_VSP_GINGERby11",
165                   "model-version": "1.0",
166                   "model-description": "092017_VSP_GINGERby11",
167                 }
168               ]
169             }
170           },
171         ]
172       }
173     )
174     .as('aai_get_version_by_invariant_id');
175
176     openNewVnfChangeModal();
177   });
178
179   afterEach(() => {
180     cy.screenshot();
181   });
182
183
184   it(`vnf software upgrade: given vnf with matching workflow -- payload is as expected`, function () {
185
186     cy.route(`${Cypress.config('baseUrl')}/workflows-management/workflows?vnfModelId=1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d`,
187       [{
188         "id": "ab6478e4-ea33-3346-ac12-ab121484a333",
189         "workflowName": "inPlaceSoftwareUpdate",
190         "name": "VNF In Place Software Update",
191         "source": "native",
192         "workflowInputParameters": [
193           {
194             "label": "New Software Version",
195             "inputType": "text",
196             "required": true,
197             "soFieldName": "new_software_version",
198             "soPayloadLocation": "userParams",
199             "validation": []
200           }
201         ]
202       }])
203     .as('workflows_inPlaceSoftwareUpdate');
204
205     fillSubscriberAndServiceType();
206     selectNfRole();
207     selectVnf();
208
209     cy.get('#workflow').select('VNF In Place Software Update');
210
211     cy.get('#internal-workflow-parameter-text-2-operations-timeout')
212       .type("1");
213     cy.get('#internal-workflow-parameter-text-3-existing-software-version')
214       .type("1.0");
215     cy.get('#internal-workflow-parameter-text-4-new-software-version')
216       .type("3.0");
217
218     cy.route('POST', `${Cypress.config('baseUrl')}/change-management/workflow/zolson3amdns02test2`)
219       .as('apply_workflow');
220
221     cy.get('#submit').click();
222
223     cy.wait('@apply_workflow').then(xhr => {
224       cy.deepCompare(xhr.request.body, {
225         "requestType": "VNF In Place Software Update",
226         "requestDetails": [
227           {
228             "vnfName": "zolson3amdns02test2",
229             "vnfInstanceId": "8e5e3ba1-3fe6-4d86-966e-f9f03dab4855",
230             "modelInfo": {
231               "modelType": "vnf",
232               "modelInvariantId": "e88d6582-b7e5-4dc6-ac9c-6f7130727a92",
233               "modelVersionId": "1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d",
234               "modelName": "zolson3amdns02test2",
235               "modelCustomizationId": "cc40295f-a834-4f42-b634-32fff9d6489b"
236             },
237             "cloudConfiguration": {
238               "lcpCloudRegionId": "mdt1",
239               "tenantId": "88a6ca3ee0394ade9403f075db23167e"
240             },
241             "requestInfo": {
242               "source": "VID",
243               "suppressRollback": false,
244               "requestorId": "us16807000"
245             },
246             "relatedInstanceList": [
247               {
248                 "relatedInstance": {
249                   "instanceId": "97315a05-e6f3-4c47-ae7e-d850c327aa08",
250                   "modelInfo": {
251                     "modelType": "service",
252                     "modelInvariantId": "bceeaff9-5716-42bf-8fa1-8c6f720cf61d",
253                     "modelVersionId": "74fa72dd-012b-49c3-800d-06b12bcaf1a0",
254                     "modelName": "Dror_service1806_Macro1",
255                     "modelVersion": "2.0"
256                   }
257                 }
258               }
259             ],
260             "requestParameters": {
261               "payload": "{\"existing_software_version\":\"1.0\",\"new_software_version\":\"3.0\",\"operations_timeout\":\"1\"}"
262             }
263           }
264         ]
265       });
266     });
267
268   });
269
270   it(`pnf software upgrade: given pnf with matching workflow -- payload is as expected`, function () {
271
272     cy.route(`${Cypress.config('baseUrl')}/workflows-management/workflows?vnfModelId=1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d`,
273       [{
274         "id": "ab6478e4-ea33-3346-ac12-ab121484a333",
275         "workflowName": "PNFSoftwareUpgrade",
276         "name": "PNF Software Upgrade",
277         "source": "native",
278         "workflowInputParameters": [
279           {
280             "label": "Target Software Version",
281             "inputType": "text",
282             "required": true,
283             "soFieldName": "targetSoftwareVersion",
284             "soPayloadLocation": "userParams",
285             "validation": []
286           }
287         ]
288       }])
289       .as('workflows_PNFSoftwareUpgrade');
290
291     fillSubscriberAndServiceType();
292     selectNfRole();
293     selectPnf();
294
295     cy.get('#workflow').select('PNF Software Upgrade');
296
297     cy.get('#internal-workflow-parameter-text-6-target-software-version')
298       .type("demo-sw-ver2.0.0");
299
300     cy.route('POST', `${Cypress.config('baseUrl')}/change-management/workflow/zolson3amdns02test2`)
301       .as('apply_workflow');
302
303     cy.get('#submit').click();
304
305     cy.wait('@apply_workflow').then(xhr => {
306       cy.deepCompare(xhr.request.body, {
307         "requestType": "PNF Software Upgrade",
308         "requestDetails": [
309           {
310             "pnfInstanceId": "8e5e3ba1-3fe6-4d86-966e-f9f03dab4855",
311             "modelInfo": {
312               "modelType": "pnf",
313               "modelInvariantId": "e88d6582-b7e5-4dc6-ac9c-6f7130727a92",
314               "modelVersionId": "1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d",
315               "modelName": "zolson3amdns02test2",
316               "modelCustomizationId": "cc40295f-a834-4f42-b634-32fff9d6489b"
317             },
318             "cloudConfiguration": {
319               "lcpCloudRegionId": "mdt1",
320               "tenantId": "88a6ca3ee0394ade9403f075db23167e"
321             },
322             "requestInfo": {
323               "source": "VID",
324               "suppressRollback": false,
325               "requestorId": "us16807000"
326             },
327             "requestParameters": {
328               "userParams":[
329                 {
330                   "name":"pnfId",
331                   "value":"8e5e3ba1-3fe6-4d86-966e-f9f03dab4855"
332                 },
333                 {
334                   "name":"pnfName",
335                   "value":"zolson3amdns02test2"
336                 },
337                 {
338                   "name":"targetSoftwareVersion",
339                   "value":"demo-sw-ver2.0.0"
340                 }
341               ]
342             }
343           }
344         ]
345       });
346     });
347
348   });
349
350   function selectNfRole() {
351     cy.get('#vnfType').select('vMobileDNS');
352   }
353
354   function selectVnf() {
355     cy.get('#fromVNFVersion').select('1.0');
356
357     cy.log("open the Available VNF list").get('#vnfName').click();
358     cy.get('li').contains('zolson3amdns02test2').click();
359     cy.log("collapse the Available VNF list").get('#vnfName').click();
360   }
361
362   function selectPnf() {
363     cy.get('#fromVNFVersion').select('1.0');
364
365     cy.log("open the Available VNF list").get('#vnfName').click();
366     cy.get('li').contains('zolson3amdns02test2').click();
367     cy.log("collapse the Available VNF list").get('#vnfName').click();
368   }
369
370
371 });