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