blob: 3c53d262fc9f752cc3a295730f263316482d8aec [file] [log] [blame]
Ittay Sterne8887222019-12-01 19:38:32 +02001describe('Drawing Board: Instantiation Templates', function () {
2
Alexey Sandlerbefd7842019-12-11 10:06:31 +02003 describe('Instantiation templates ', () => {
Ittay Sterne8887222019-12-01 19:38:32 +02004
5 beforeEach(() => {
6 cy.clearSessionStorage();
Ittay Stern4bfa2df2019-12-17 14:55:04 +02007 cy.setTestApiParamToGR();
Alexey Sandlerbefd7842019-12-11 10:06:31 +02008 cy.initAAIMock();
Alexey Sandler12ceb442019-12-16 10:18:41 +02009 cy.initGetAAISubDetails();
Ittay Sterne8887222019-12-01 19:38:32 +020010 cy.initVidMock();
11 cy.initDrawingBoardUserPermission();
12 cy.login();
13
14 mockAsyncBulkResponse();
15 });
16
17 afterEach(() => {
18 cy.screenshot();
19 });
20
Alexey Sandlerbefd7842019-12-11 10:06:31 +020021 describe('Load Page and Deploy', () => {
Ittay Sterne8887222019-12-01 19:38:32 +020022
Alexey Sandler12ceb442019-12-16 10:18:41 +020023 it(`Given a stored template - when click "deploy" - then a coherent request should be sent upon deploy`, () => {
Ittay Sterne8887222019-12-01 19:38:32 +020024
Alexey Sandlerbefd7842019-12-11 10:06:31 +020025 loadDrawingBoardWithRecreateMode();
Ittay Sterne8887222019-12-01 19:38:32 +020026
Alexey Sandlerbefd7842019-12-11 10:06:31 +020027 // Then...
28 cy.getElementByDataTestsId("node-vProbe_NC_VNF 0").should('be.visible');
29 assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd();
30 });
Ittay Sterne8887222019-12-01 19:38:32 +020031
Sara Weiss19bfe442019-12-17 13:20:29 +020032 it('Given a stored template - when "edit" vnf and vfmodules are opened - then template’s details are visible as expected and deploy without changes', () => {
Ittay Sterne8887222019-12-01 19:38:32 +020033
Alexey Sandlerbefd7842019-12-11 10:06:31 +020034 loadDrawingBoardWithRecreateMode();
Ittay Sterne8887222019-12-01 19:38:32 +020035
Alexey Sandlerbefd7842019-12-11 10:06:31 +020036 // Then...
Ittay Stern8f0f7282019-12-16 20:07:50 +020037 editNode("node-21ae311e-432f-4c54-b855-446d0b8ded72-vProbe_NC_VNF 0")
Alexey Sandler46363532019-12-12 11:52:18 +020038 .getElementByDataTestsId("instanceName").should('have.value', 'hvf6arlba007')
39 .getElementByDataTestsId("productFamily").should('contain', 'Emanuel')
40 .getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
Alexey Sandlerbefd7842019-12-11 10:06:31 +020041 .getElementByDataTestsId("lcpRegion").should('contain', 'hvf6')
Alexey Sandler46363532019-12-12 11:52:18 +020042 .getElementByDataTestsId("lineOfBusiness").should('contain', 'zzz1')
43 .getElementByDataTestsId("rollback").should('contain', 'Rollback')
Alexey Sandler12ceb442019-12-16 10:18:41 +020044 .checkPlatformValue('xxx1')
45 .getElementByDataTestsId("cancelButton").click();
Ittay Sterne8887222019-12-01 19:38:32 +020046
Ittay Stern8f0f7282019-12-16 20:07:50 +020047 editNode("node-c5b26cc1-a66f-4b69-aa23-6abc7c647c88-vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0")
Alexey Sandler46363532019-12-12 11:52:18 +020048 .getElementByDataTestsId("instanceName").should('have.value', 'hvf6arlba007_lba_Base_01')
49 .getElementByDataTestsId("lcpRegion").should('contain', 'hvf6')
50 .getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
51 .getElementByDataTestsId("rollback").should('contain', 'Rollback')
Alexey Sandler46363532019-12-12 11:52:18 +020052 .getElementByDataTestsId("cancelButton").click();
53
Ittay Stern8f0f7282019-12-16 20:07:50 +020054 editNode("node-c09e4530-8fd8-418f-9483-2f57ce927b05-vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1")
55 .getElementByDataTestsId("instanceName").should('have.value', 'my_hvf6arlba007_lba_dj_01')
56 .getElementByDataTestsId("volumeGroupName").should('have.value', 'my_special_hvf6arlba007_lba_dj_01_vol')
Alexey Sandler46363532019-12-12 11:52:18 +020057 .getElementByDataTestsId("lcpRegion").should('contain', 'hvf6')
58 .getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
59 .getElementByDataTestsId("rollback").should('contain', 'Rollback')
Ittay Stern8f0f7282019-12-16 20:07:50 +020060 .getElementByDataTestsId("sdncPreLoad").should('have.value', 'on')
Alexey Sandler46363532019-12-12 11:52:18 +020061 .getElementByDataTestsId("cancelButton").click();
62
Alexey Sandlerbefd7842019-12-11 10:06:31 +020063 assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd();
Alexey Sandlerf53a9172019-12-05 17:04:45 +020064 });
Ittay Sterne8887222019-12-01 19:38:32 +020065
Ittay Stern8f0f7282019-12-16 20:07:50 +020066 it(`Given a stored template - when "edit" service is opened - then template’s details are visible as expected`, function () {
Alexey Sandler46363532019-12-12 11:52:18 +020067
68 loadDrawingBoardWithRecreateMode();
69
70 cy.openServiceContextMenu()
Alexey Sandler12ceb442019-12-16 10:18:41 +020071 .getElementByDataTestsId("context-menu-header-edit-item").click()
72 .getElementByDataTestsId("instanceName").should('have.value', 'vProbe_NC_Service_DG_new_SI')
73 .getElementByDataTestsId("subscriberName").should('contain', 'SILVIA ROBBINS')
74 .getElementByDataTestsId("serviceType").should('contain', 'TYLER SILVIA')
75 .getElementByDataTestsId("owningEntity").should('contain', 'WayneHolland')
76 .getElementByDataTestsId("project").should('contain', 'WATKINS')
77 .getElementByDataTestsId("rollback").should('contain', 'Rollback');
78
Alexey Sandler12ceb442019-12-16 10:18:41 +020079 });
Ittay Stern8f0f7282019-12-16 20:07:50 +020080
81
Sara Weiss19bfe442019-12-17 13:20:29 +020082 it('Given a stored template - edit service vnf and vfmodule without changes - deploy request should be without changes', function () {
83
84 loadDrawingBoardWithRecreateMode();
85
86 //open - set edit service
87 cy.openServiceContextMenu()
88 .getElementByDataTestsId("context-menu-header-edit-item").click()
89 .getElementByDataTestsId('form-set').click();
90
91 //open - set edit vnf
92 editNode("node-21ae311e-432f-4c54-b855-446d0b8ded72-vProbe_NC_VNF 0")
93 .getElementByDataTestsId('form-set').click();
94
95 //open - set edit vf
96 editNode("node-c5b26cc1-a66f-4b69-aa23-6abc7c647c88-vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0")
97 .getElementByDataTestsId('form-set').click();
98
99 assertThatBodyFromDeployRequestEqualsToFile();
100 });
Ittay Stern8f0f7282019-12-16 20:07:50 +0200101
Alexey Sandler46363532019-12-12 11:52:18 +0200102 });
Ittay Sterne8887222019-12-01 19:38:32 +0200103 });
Ittay Sterne8887222019-12-01 19:38:32 +0200104 });
105
Alexey Sandlerbefd7842019-12-11 10:06:31 +0200106function loadDrawingBoardWithRecreateMode() {
107 const serviceModelId = '6cfeeb18-c2b0-49df-987a-da47493c8e38';
108 const templateUuid = "46390edd-7100-46b2-9f18-419bd24fb60b";
109
110 const drawingBoardAction = `RECREATE`;
111 const templateTopologyEndpoint = "templateTopology";
112 cy.route(`**/rest/models/services/${serviceModelId}`,
113 'fixture:../support/jsonBuilders/mocks/jsons/instantiationTemplates/templates__service_model.json')
114 .as('serviceModel');
115
116 cy.route(`**/asyncInstantiation/${templateTopologyEndpoint}/${templateUuid}`,
117 'fixture:../../../vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json')
118 .as('templateTopology');
119
120 // When...
121
122 cy.openIframe(`app/ui/#/servicePlanning/${drawingBoardAction}` +
123 `?jobId=${templateUuid}` +
124 `&serviceModelId=${serviceModelId}`);
125
126 cy.wait('@serviceModel');
127 cy.wait('@templateTopology');
128}
129
Ittay Stern8f0f7282019-12-16 20:07:50 +0200130function editNode(dataTestId: string) {
131 return cy.drawingBoardTreeOpenContextMenuByElementDataTestId(dataTestId)
132 .drawingBoardTreeClickOnContextMenuOptionByName('Edit')
133}
134
Alexey Sandlerbefd7842019-12-11 10:06:31 +0200135function assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd() {
136 cy.getDrawingBoardDeployBtn().click();
137 cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
138 cy.readFile('../vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json').then((expectedResult) => {
139 convertRollbackOnFailureValueFromStringToBoolean(expectedResult);
140
141 let xhrBodyWithoutIsDirtyField = removeIsDirtyFieldFromXhrRequestBody(xhr);
142 cy.deepCompare(xhrBodyWithoutIsDirtyField, expectedResult);
143 });
144 });
145}
146
Sara Weiss19bfe442019-12-17 13:20:29 +0200147
148function assertThatBodyFromDeployRequestEqualsToFile() {
149 cy.getDrawingBoardDeployBtn().click();
150 cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
151
152 cy.readFile('../vid-automation/src/test/resources/asyncInstantiation/templates__instance_from_template__set_without_modify1.json').then((expectedResult) => {
153 cy.deepCompare(xhr.request.body, expectedResult);
154 });
155
156 });
157}
158
Alexey Sandlerb85a0462019-12-04 17:48:06 +0200159 //We use this function because the deployService() on drawing-board-header.component class
160 // changes rollbackOnFailure value from string type to boolean.
161 function convertRollbackOnFailureValueFromStringToBoolean(expectedResult: any) {
162 expectedResult.rollbackOnFailure = Boolean(expectedResult.rollbackOnFailure);
163 }
Ittay Sterne8887222019-12-01 19:38:32 +0200164
Alexey Sandlerbefd7842019-12-11 10:06:31 +0200165function removeIsDirtyFieldFromXhrRequestBody(xhr : any) {
166 let xhrTempBody = JSON.parse(JSON.stringify(xhr.request.body));
167 delete xhrTempBody.isDirty;
168 return xhrTempBody;
169}
170
Ittay Sterne8887222019-12-01 19:38:32 +0200171 function mockAsyncBulkResponse() {
172 cy.server().route({
173 url: Cypress.config('baseUrl') + '/asyncInstantiation/bulk',
174 method: 'POST',
175 status: 200,
176 response: "[]",
177 }).as("expectedPostAsyncInstantiation");
178 }