Disable Scheduler by feature toggle FLAG_GUILIN_CHANGEMG_SUBMIT_TO_SO
[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           "FLAG_GUILIN_CHANGEMG_SUBMIT_TO_SO": true,
141         })
142       .as('initFlags');
143
144       cy.route(`${Cypress.config('baseUrl')}/get_vnf_data_by_globalid_and_service_type/e433710f-9217-458d-a79d-1c7aff376d89/TYLER SILVIA`,
145         'fixture:../support/jsonBuilders/mocks/jsons/get_vnf_data_by_globalid_and_service_type.json')
146       .as('aai_get_vnf_data');
147
148       cy.route(`${Cypress.config('baseUrl')}/rest/models/services?distributionStatus=DISTRIBUTED`,
149         'fixture:../support/jsonBuilders/mocks/jsons/bug616888/list-services.json')
150       .as('list_services');
151
152       cy.route(`${Cypress.config('baseUrl')}/rest/models/services/74fa72dd-012b-49c3-800d-06b12bcaf1a0`,
153         'fixture:../support/jsonBuilders/mocks/jsons/bug616888/Dror_service1806_Macro1.json')
154       .as('get_service_model');
155
156       cy.route('POST', `${Cypress.config('baseUrl')}/aai_get_version_by_invariant_id`,
157         {
158           "model": [
159             {
160               "model-invariant-id": "e88d6582-b7e5-4dc6-ac9c-6f7130727a92",
161               "model-type": "resource",
162               "resource-version": "1507747452923",
163               "model-vers": {
164                 "model-ver": [
165                   {
166                     "model-version-id": "1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d",
167                     "model-name": "092017_VSP_GINGERby11",
168                     "model-version": "1.0",
169                     "model-description": "092017_VSP_GINGERby11",
170                   }
171                 ]
172               }
173             },
174           ]
175         }
176       )
177       .as('aai_get_version_by_invariant_id');
178
179       openNewVnfChangeModal();
180     });
181
182     afterEach(() => {
183       cy.screenshot();
184     });
185
186
187     it(`vnf software upgrade: given vnf with matching workflow -- payload is as expected`, function () {
188
189       cy.route(`${Cypress.config('baseUrl')}/workflows-management/workflows?vnfModelId=1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d`,
190         [{
191           "id": "ab6478e4-ea33-3346-ac12-ab121484a333",
192           "workflowName": "inPlaceSoftwareUpdate",
193           "name": "VNF In Place Software Update",
194           "source": "native",
195           "workflowInputParameters": [
196             {
197               "label": "New Software Version",
198               "inputType": "text",
199               "required": true,
200               "soFieldName": "new_software_version",
201               "soPayloadLocation": "userParams",
202               "validation": []
203             }
204           ]
205         }])
206       .as('workflows_inPlaceSoftwareUpdate');
207
208       fillSubscriberAndServiceType();
209       selectNfRole();
210       selectVnf();
211
212       cy.get('#workflow').select('VNF In Place Software Update');
213
214       cy.get('#internal-workflow-parameter-text-2-operations-timeout')
215       .type("1");
216       cy.get('#internal-workflow-parameter-text-3-existing-software-version')
217       .type("1.0");
218       cy.get('#internal-workflow-parameter-text-4-new-software-version')
219       .type("3.0");
220
221       cy.route('POST', `${Cypress.config('baseUrl')}/change-management/workflow/zolson3amdns02test2`)
222       .as('apply_workflow');
223
224       cy.get('#submit').click();
225
226       cy.wait('@apply_workflow').then(xhr => {
227         cy.deepCompare(xhr.request.body, {
228           "requestType": "VNF In Place Software Update",
229           "requestDetails": [
230             {
231               "vnfName": "zolson3amdns02test2",
232               "vnfInstanceId": "8e5e3ba1-3fe6-4d86-966e-f9f03dab4855",
233               "modelInfo": {
234                 "modelType": "vnf",
235                 "modelInvariantId": "e88d6582-b7e5-4dc6-ac9c-6f7130727a92",
236                 "modelVersionId": "1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d",
237                 "modelName": "zolson3amdns02test2",
238                 "modelCustomizationId": "cc40295f-a834-4f42-b634-32fff9d6489b"
239               },
240               "cloudConfiguration": {
241                 "lcpCloudRegionId": "mdt1",
242                 "tenantId": "88a6ca3ee0394ade9403f075db23167e"
243               },
244               "requestInfo": {
245                 "source": "VID",
246                 "suppressRollback": false,
247                 "requestorId": "us16807000"
248               },
249               "relatedInstanceList": [
250                 {
251                   "relatedInstance": {
252                     "instanceId": "97315a05-e6f3-4c47-ae7e-d850c327aa08",
253                     "modelInfo": {
254                       "modelType": "service",
255                       "modelInvariantId": "bceeaff9-5716-42bf-8fa1-8c6f720cf61d",
256                       "modelVersionId": "74fa72dd-012b-49c3-800d-06b12bcaf1a0",
257                       "modelName": "Dror_service1806_Macro1",
258                       "modelVersion": "2.0"
259                     }
260                   }
261                 }
262               ],
263               "requestParameters": {
264                 "payload": "{\"existing_software_version\":\"1.0\",\"new_software_version\":\"3.0\",\"operations_timeout\":\"1\"}"
265               }
266             }
267           ]
268         });
269       });
270
271     });
272
273     it(`pnf software upgrade: given pnf with matching workflow -- payload is as expected`, function () {
274
275       cy.route(`${Cypress.config('baseUrl')}/workflows-management/workflows?vnfModelId=1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d`,
276         [{
277           "id": "ab6478e4-ea33-3346-ac12-ab121484a333",
278           "workflowName": "PNFSoftwareUpgrade",
279           "name": "PNF Software Upgrade",
280           "source": "native",
281           "workflowInputParameters": [
282             {
283               "label": "Target Software Version",
284               "inputType": "text",
285               "required": true,
286               "soFieldName": "targetSoftwareVersion",
287               "soPayloadLocation": "userParams",
288               "validation": []
289             }
290           ]
291         }])
292       .as('workflows_PNFSoftwareUpgrade');
293
294       fillSubscriberAndServiceType();
295       selectNfRole();
296       selectPnf();
297
298       cy.get('#workflow').select('PNF Software Upgrade');
299
300       cy.get('#internal-workflow-parameter-text-6-target-software-version')
301       .type("demo-sw-ver2.0.0");
302
303       cy.route('POST', `${Cypress.config('baseUrl')}/change-management/workflow/zolson3amdns02test2`)
304       .as('apply_workflow');
305
306       cy.get('#submit').click();
307
308       cy.wait('@apply_workflow').then(xhr => {
309         cy.deepCompare(xhr.request.body, {
310           "requestType": "PNF Software Upgrade",
311           "requestDetails": [
312             {
313               "pnfInstanceId": "8e5e3ba1-3fe6-4d86-966e-f9f03dab4855",
314               "modelInfo": {
315                 "modelType": "pnf",
316                 "modelInvariantId": "e88d6582-b7e5-4dc6-ac9c-6f7130727a92",
317                 "modelVersionId": "1ecfa5f1-78c5-41f6-ad34-753ca1fcdc5d",
318                 "modelName": "zolson3amdns02test2",
319                 "modelCustomizationId": "cc40295f-a834-4f42-b634-32fff9d6489b"
320               },
321               "cloudConfiguration": {
322                 "lcpCloudRegionId": "mdt1",
323                 "tenantId": "88a6ca3ee0394ade9403f075db23167e"
324               },
325               "requestInfo": {
326                 "source": "VID",
327                 "suppressRollback": false,
328                 "requestorId": "us16807000"
329               },
330               "requestParameters": {
331                 "userParams": [
332                   {
333                     "name": "pnfId",
334                     "value": "8e5e3ba1-3fe6-4d86-966e-f9f03dab4855"
335                   },
336                   {
337                     "name": "pnfName",
338                     "value": "zolson3amdns02test2"
339                   },
340                   {
341                     "name": "targetSoftwareVersion",
342                     "value": "demo-sw-ver2.0.0"
343                   }
344                 ]
345               }
346             }
347           ]
348         });
349       });
350
351     });
352
353     function selectNfRole() {
354       cy.get('#vnfType').select('vMobileDNS');
355     }
356
357     function selectVnf() {
358       cy.get('#fromVNFVersion').select('1.0');
359
360       cy.log("open the Available VNF list").get('#vnfName').click();
361       cy.get('li').contains('zolson3amdns02test2').click();
362       cy.log("collapse the Available VNF list").get('#vnfName').click();
363     }
364
365     function selectPnf() {
366       cy.get('#fromVNFVersion').select('1.0');
367
368       cy.log("open the Available VNF list").get('#vnfName').click();
369       cy.get('li').contains('zolson3amdns02test2').click();
370       cy.log("collapse the Available VNF list").get('#vnfName').click();
371     }
372
373
374   });
375 });