blob: 6700ff4254b7b64069ad68208ff75c6b9d29662f [file] [log] [blame]
import {JsonBuilder} from "../../support/jsonBuilders/jsonBuilder";
import {ServiceModel} from "../../support/jsonBuilders/models/service.model";
describe('Drawing board : VRF', function () {
var jsonBuilderAndMock: JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
beforeEach(() => {
cy.clearSessionStorage();
cy.setReduxState();
cy.preventErrorsOnLoading();
cy.initAAIMock();
cy.initActiveNetworks();
cy.initActiveVPNs();
cy.initVidMock();
cy.login();
cy.server().route({
url: Cypress.config('baseUrl') + '/asyncInstantiation/bulk',
method: 'POST',
status: 200,
response: "[]",
}).as("expectedPostAsyncInstantiation");
});
afterEach(() => {
cy.screenshot();
});
describe('vrf drawing board', () => {
it('should show vrf model and vrf instance correctly', () => {
const serviceModelId: string = "f028b2e2-7080-4b13-91b2-94944d4c42d8";
const vrfEntryName: string = "VRF Entry Configuration 0";
initDrawingBoardWithColectionResource(serviceModelId);
cy.get('.vf-type').contains('VRF');
cy.getElementByDataTestsId('available-models-tree').getElementByDataTestsId('node-name').contains(vrfEntryName);
/*
Right tree
*/
const rightShouldHaves: { [dataTestId: string]: { [dataTestId: string]: string; }; } = {
'node-9cac02be-2489-4374-888d-2863b4511a59-VRF Entry Configuration 0:0': {
'node-type-indicator': 'VRF',
'node-name': '<Automatically Assigned>'
},
'node-undefined-undefined:0': {
'node-type-indicator': 'N',
'node-name': 'NETWORK1_INSTANCE_NAME',
'status-property-orchStatus': 'Assigned',
'status-property-provStatus': 'prov'
},
'node-undefined-undefined:1': {
'node-type-indicator': 'VPN',
'node-name': 'VPN1_INSTANCE_NAME',
'status-property-orchStatus': 'Assigned',
'status-property-provStatus': 'prov'
}
};
for (let node in rightShouldHaves) {
var [nodeName, nodeEq] = node.split(":");
for (let span in rightShouldHaves[node]) {
cy.getElementByDataTestsId(nodeName).eq(+nodeEq).find(`[data-tests-id='${span}']`).should('have.text', rightShouldHaves[node][span]);
}
}
});
it('vrf on click add should show generic modal ', () => {
const serviceModelId: string = "f028b2e2-7080-4b13-91b2-94944d4c42d8";
initDrawingBoardWithColectionResource(serviceModelId);
cy.getElementByDataTestsId('searchByNetworkRole').click({force: true}).then(() => {
cy.get('.allCheckboxAreSelected input').should('have.attr', 'disabled');
cy.get('.sdcCheckboxMember input').eq(0).should('not.have.attr', 'disabled');
cy.get('.sdcCheckboxMember input').eq(0).click({force: true});
cy.get('table thead .allCheckboxAreSelected input').should('have.attr', 'disabled');
cy.get('.sdcCheckboxMember input').eq(1).should('not.have.attr', 'disabled');
cy.getElementByDataTestsId("vnf-members-search").find('input').type("2.0");
});
});
it('check VRF popup', () => {
const serviceModelId: string = "f028b2e2-7080-4b13-91b2-94944d4c42d8";
initDrawingBoardWithColectionResource(serviceModelId);
cy.getElementByDataTestsId('searchByNetworkRole').click({force: true}).then(() => {
checkNetworkTableHeaders();
checkNetworkPopupTitles();
cy.validateSelectOptions('roles-criteria', roleOptions);
// set Network should be disabled
cy.isElementContainsAttr("setMembersBtn", "disabled");
cy.get('.sdcCheckboxMember input').eq(0).click({force: true}).then(() => {
cy.isElementNotContainsAttr("setMembersBtn", "disabled");
cy.getElementByDataTestsId('setMembersBtn').click({force: true}).then(() => {
checkVPNTableHeaders();
checkVPNPopupTitles();
cy.isElementContainsAttr("setMembersBtn", "disabled");
cy.get('.sdcCheckboxMember[data-tests-id=\'120d39fb-3627-473d-913c-d228dd0f8e5b\'] input').eq(0).click({force: true}).then(() => {
cy.isElementNotContainsAttr("setMembersBtn", "disabled");
cy.getElementByDataTestsId('setMembersBtn').click({force: true}).then(() => {
cy.isElementNotContainsAttr("deployBtn", "disabled");
cy.getElementByDataTestsId('deployBtn').click({force: true}).then(() => {
cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
cy.readFile('../vid-automation/src/test/resources/vrf/vrfServiceCreateRequest.json').then((expectedResult) => {
cy.deepCompare(xhr.request.body, expectedResult);
});
});
});
});
});
});
})
});
});
it('create new VRF and change associations', () => {
const oldVPNDataTestId: string = '120d39fb-3627-473d-913c-d228dd0f8e5b';
const oldNETWORKDataTestId: string = '10a74149-c9d7-4918-bbcf-d5fb9b1799ce';
const newVPNDataTestId: string = '46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7';
const newNETWORKDataTestId: string = '3b3308d4-0cd3-43e4-9a7b-d1925c861135';
const serviceModelId: string = "f028b2e2-7080-4b13-91b2-94944d4c42d8";
const redux = reduxWithVrf(serviceModelId);
redux.service.serviceInstance[serviceModelId].vrfs = <any>{};
cy.setReduxState(<any>redux);
cy.openIframe(`app/ui/#/servicePlanning?serviceModelId=${serviceModelId}`);
cy.getElementByDataTestsId('searchByNetworkRole').click({force: true}).then(() => {
cy.isElementContainsAttr("setMembersBtn", "disabled");
cy.get('.sdcCheckboxMember[data-tests-id="' + newNETWORKDataTestId + '"] input').eq(0).click({force: true}).then(() => {
cy.isElementNotContainsAttr("setMembersBtn", "disabled");
cy.getElementByDataTestsId('setMembersBtn').click({force: true}).then(() => {
cy.isElementContainsAttr("setMembersBtn", "disabled");
cy.get('.sdcCheckboxMember[data-tests-id="' + newVPNDataTestId + '"] input').eq(0).click({force: true}).then(() => {
cy.isElementNotContainsAttr("setMembersBtn", "disabled");
cy.getElementByDataTestsId('setMembersBtn').click({force: true}).then(() => {
cy.get('#VRF').should('have.length', 1);
cy.get('#VRF .icon-browse').click({force: true}).then(() => {
cy.getElementByDataTestsId('context-menu-changeAssociations').click(); // click on change associations
cy.getElementByDataTestsId(oldNETWORKDataTestId).get('input').should('be.checked'); // check if selected network is checked.
cy.getElementByDataTestsId('setMembersBtn').click({force: true}).then(() => { // click 'NEXT' (set network)
cy.getElementByDataTestsId(oldVPNDataTestId).get('input').should('be.checked'); // check if selected VPN is checked
cy.get(".sdcCheckboxMember[data-tests-id='" + newVPNDataTestId + "'] input").check({force: true}).then(() => { // select other VPN
cy.getElementByDataTestsId('cancelBtn').click().then(() => {
cy.get(".sdcCheckboxMember[data-tests-id='" + newNETWORKDataTestId + "'] input").check({force: true}).then(() => { // select other VPN
cy.getElementByDataTestsId('setMembersBtn').click();
cy.get(".sdcCheckboxMember[data-tests-id='" + newVPNDataTestId + "'] input")
cy.getElementByDataTestsId('setMembersBtn').click();
checkSelectedRows(newNETWORKDataTestId, newVPNDataTestId);
})
});
})
});
});
})
});
});
})
});
});
it('delete vrf', () => {
cy.permissionVidMock();
const SUBSCRIBER_ID: string = "e433710f-9217-458d-a79d-1c7aff376d89";
const SERVICE_TYPE: string = "TYLER SILVIA";
const SERVICE_MODEL_ID: string = '4117a0b6-e234-467d-b5b9-fe2f68c8b0fc';
const SERVICE_INSTANCE_ID: string = "f8791436-8d55-4fde-b4d5-72dd2cf13cfb";
configExpectedPostAsyncInstantiationDelete();
configServiceTopologyWithVRF(SUBSCRIBER_ID, SERVICE_TYPE, SERVICE_INSTANCE_ID);
configServiceTreeWithMultipleChildren_serviceModel(SERVICE_MODEL_ID);
cy.readFile('../vid-automation/src/test/resources/VnfGroup/deleteServiceWith2VnfGroupsRequest_AndThreeGroupMembers.json').then((expectedResult) => {
cy.openIframe(`app/ui/#/servicePlanning/EDIT?serviceModelId=${SERVICE_MODEL_ID}&subscriberId=${SUBSCRIBER_ID}&serviceType=${SERVICE_TYPE}&serviceInstanceId=${SERVICE_INSTANCE_ID}`);
cy.serviceActionDelete();
cy.getElementByDataTestsId('delete-status-type-header').should('exist');
cy.serviceActionUndoDelete();
cy.getElementByDataTestsId('delete-status-type-header').should('not.exist');
cy.serviceActionDelete();
cy.isNodeDeleted(0);
cy.isNodeNotDeleted(1);
cy.isNodeNotDeleted(2);
cy.isElementNotContainsAttr("deployBtn", "disabled");
cy.getDrawingBoardDeployBtn().click();
/*cy.wait('@expectedPostAsyncInstantiationDelete').then(xhr => {
cy.readFile('../vid-automation/src/test/resources/asyncInstantiation/vidRequestDeleteMacroService.json').then((expectedResult) => {
cy.deepCompare(xhr.request.body, expectedResult);
});
});*/
});
});
it('vpn component info', () => {
cy.permissionVidMock();
const SUBSCRIBER_ID: string = "e433710f-9217-458d-a79d-1c7aff376d89";
const SERVICE_TYPE: string = "TYLER SILVIA";
const SERVICE_MODEL_ID: string = '4117a0b6-e234-467d-b5b9-fe2f68c8b0fc';
const SERVICE_INSTANCE_ID: string = "f8791436-8d55-4fde-b4d5-72dd2cf13cfb";
configServiceTopologyWithVRF(SUBSCRIBER_ID, SERVICE_TYPE, SERVICE_INSTANCE_ID);
configServiceTreeWithMultipleChildren_serviceModel(SERVICE_MODEL_ID);
cy.openIframe(`app/ui/#/servicePlanning/EDIT?serviceModelId=${SERVICE_MODEL_ID}&subscriberId=${SUBSCRIBER_ID}&serviceType=${SERVICE_TYPE}&serviceInstanceId=${SERVICE_INSTANCE_ID}`);
cy.getElementByDataTestsId("node-undefined-undefined").eq(1).click();
cy.getElementByDataTestsId("model-item-value-Route target id").should("have.text","mock-global-1");
cy.getElementByDataTestsId("model-item-value-Route target role").should("have.text","mock-role-x");
cy.getElementByDataTestsId("model-item-value-Customet VPN ID").should("have.text","VPN1260");
cy.getElementByDataTestsId("model-item-value-Region").should("have.text","USA,EMEA");
});
});
it('network component info', () => {
cy.permissionVidMock();
const SUBSCRIBER_ID: string = "e433710f-9217-458d-a79d-1c7aff376d89";
const SERVICE_TYPE: string = "TYLER SILVIA";
const SERVICE_MODEL_ID: string = '4117a0b6-e234-467d-b5b9-fe2f68c8b0fc';
const SERVICE_INSTANCE_ID: string = "f8791436-8d55-4fde-b4d5-72dd2cf13cfb";
configServiceTopologyWithVRF(SUBSCRIBER_ID, SERVICE_TYPE, SERVICE_INSTANCE_ID);
configServiceTreeWithMultipleChildren_serviceModel(SERVICE_MODEL_ID);
cy.openIframe(`app/ui/#/servicePlanning/EDIT?serviceModelId=${SERVICE_MODEL_ID}&subscriberId=${SUBSCRIBER_ID}&serviceType=${SERVICE_TYPE}&serviceInstanceId=${SERVICE_INSTANCE_ID}`);
cy.getElementByDataTestsId("node-undefined-undefined").eq(0).click();
cy.getElementByDataTestsId("model-item-value-Route target id").should("have.text","mock-global-1");
cy.getElementByDataTestsId("model-item-value-Route target role").should("have.text","mock-role-x");
});
function configServiceTopologyWithVRF(SUBSCRIBER_ID: string, SERVICE_TYPE: string, SERVICE_INSTANCE_ID: string) {
cy.readFile('../vid-automation/src/test/resources/aaiGetInstanceTopology/serviceWithVrfTopology.json').then((res) => {
jsonBuilderAndMock.basicJson(
res,
Cypress.config('baseUrl') + `/aai_get_service_instance_topology/${SUBSCRIBER_ID}/${SERVICE_TYPE}/${SERVICE_INSTANCE_ID}`,
200, 0,
"serviceWithVRF",
)
});
}
function configExpectedPostAsyncInstantiationDelete()
{
cy.server().route({
url: Cypress.config('baseUrl') + '/asyncInstantiation/bulk',
method: 'POST',
status: 200,
response: "[]",
}).as("expectedPostAsyncInstantiationDelete");
}
function configServiceTreeWithMultipleChildren_serviceModel(SERVICE_MODEL_ID: string) {
cy.readFile('../vid-automation/src/test/resources/vrf/vrfServiceRoleResponse.json').then((res) => {
jsonBuilderAndMock.basicJson(
res,
Cypress.config('baseUrl') + `/rest/models/services/${SERVICE_MODEL_ID}`,
200,
0,
"ServiceTreeWithMultipleChildren_serviceModel",
)
});
}
let roleOptions: string[] = [
'-- select an option --',
'Not assigned',
'oam_calea_net_0',
'oam_calea_net_1',
'oam_calea_net_2',
'oam_calea_net_3',
];
function checkSelectedRows(networkFataTestId: string, vpnDataTestId: string) {
cy.get('#VRF .icon-browse').click({force: true}).then(() => {
cy.getElementByDataTestsId('context-menu-changeAssociations').click(); // click on change associations
cy.getElementByDataTestsId(networkFataTestId).get('input').should('be.checked'); // check if selected network is checked.
cy.getElementByDataTestsId('setMembersBtn').click({force: true}).then(() => { // click 'NEXT' (set network)
cy.getElementByDataTestsId(vpnDataTestId).get('input').should('be.checked'); // check if selected VPN is checked
cy.getElementByDataTestsId('setMembersBtn').click();
cy.getElementByDataTestsId('setMembersBtn').click();
});
});
}
function reduxWithVrf(serviceModelId: string) {
return {
"service": {
"subscribers": [
{
"id": "e433710f-9217-458d-a79d-1c7aff376d89",
"name": "SILVIA ROBBINS",
"isPermitted": true
},
],
"serviceHierarchy": {
[serviceModelId]: {
"service": {
"uuid": serviceModelId,
"invariantUuid": "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb",
"name": "infraVPN",
"version": "1.0",
"toscaModelURL": null,
"category": "Network Service",
"serviceType": "BONDING",
"serviceRole": "INFRASTRUCTURE-VPN",
"description": "ddd",
"serviceEcompNaming": "true",
"instantiationType": "A-La-Carte",
"inputs": {},
"vidNotions": {
"instantiationUI": "macroService",
"modelCategory": "other",
"viewEditUI": "legacy",
"instantiationType": "Macro"
}
},
"vnfs": {},
"networks": {},
"collectionResources": {},
"configurations": {},
"fabricConfigurations": {},
"serviceProxies": {
"misvpn_service_proxy 0": {
"uuid": "35186eb0-e6b6-4fa5-86bb-1501b342a7b1",
"invariantUuid": "73f89e21-b96c-473f-8884-8b93bcbd2f76",
"description": "A Proxy for Service MISVPN_SERVICE",
"name": "MISVPN_SERVICE Service Proxy",
"version": "3.0",
"customizationUuid": "4c2fb7e0-a0a5-4b32-b6ed-6a974e55d923",
"inputs": {},
"commands": {},
"properties": {
"ecomp_generated_naming": "false"
},
"type": "Service Proxy",
"sourceModelUuid": "d5cc7d15-c842-450e-95ae-2a69e66dd23b",
"sourceModelInvariant": "c126ec86-59fe-48c0-9532-e39a9b3e5272",
"sourceModelName": "MISVPN_SERVICE"
}
},
"vfModules": {},
"volumeGroups": {},
"pnfs": {},
"vnfGroups": {},
"vrfs": {
"VRF Entry Configuration 0": {
"uuid": "9cac02be-2489-4374-888d-2863b4511a59",
"invariantUuid": "b67a289b-1688-496d-86e8-1583c828be0a",
"description": "VRF Entry configuration object",
"name": "VRF Entry Configuration",
"version": "30.0",
"customizationUuid": "dd024d73-9bd1-425d-9db5-476338d53433",
"inputs": {},
"commands": {},
"properties": {
"ecomp_generated_naming": "false"
},
"type": "Configuration",
"modelCustomizationName": "VRF Entry Configuration 0",
"sourceNodes": [],
"collectorNodes": null,
"configurationByPolicy": false
}
}
}
},
"serviceInstance": {
[serviceModelId]: {
"action": "Create",
"isDirty": false,
"vrfs": {
"VRF Entry Configuration 0": {
"originalName": null,
"trackById": "VRF1_INSTANCE_ID",
"action": "None",
"instanceId": "VRF1_INSTANCE_ID",
"instanceType": "VRF1_INSTANCE_TYPE",
"orchStatus": null,
"provStatus": null,
"inMaint": false,
"modelInfo": {
"modelInvariantId": "vnf-instance-model-invariant-id",
"modelVersionId": "vnf-instance-model-version-id",
"modelCustomizationId": "vnf-instance-model-customization-id",
"modelType": "vrf"
},
"uuid": "vnf-instance-model-version-id",
"productFamilyId": null,
"lcpCloudRegionId": "olson3",
"cloudOwner": "att-nc",
"legacyRegion": null,
"tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
"lineOfBusiness": null,
"platformName": null,
"vfModules": {},
"networks": {
"NETWORK1_INSTANCE_ID": {
"originalName": null,
"trackById": "NETWORK1_INSTANCE_ID",
"instanceName": "NETWORK1_INSTANCE_NAME",
"action": "None",
"instanceId": "NETWORK1_INSTANCE_ID",
"instanceType": "CONTRAIL30_BASIC",
"orchStatus": "Assigned",
"provStatus": "prov",
"inMaint": false,
"modelInfo": {
"modelInvariantId": "network-instance-model-invariant-id",
"modelVersionId": "network-instance-model-version-id",
"modelCustomizationId": "network-instance-model-customization-id",
"modelName": "modelName",
"modelType": "network"
},
"uuid": "network-instance-model-version-id",
"productFamilyId": null,
"lcpCloudRegionId": null,
"legacyRegion": null,
"tenantId": null,
"lineOfBusiness": null,
"platformName": null
}
},
"vpns": {
"VPN1_INSTANCE_ID": {
"originalName": null,
"trackById": "VPN1_INSTANCE_ID",
"instanceName": "VPN1_INSTANCE_NAME",
"action": "None",
"instanceId": "VPN1_INSTANCE_ID",
"instanceType": "CONTRAIL30_BASIC",
"orchStatus": "Assigned",
"provStatus": "prov",
"inMaint": false,
"modelInfo": {
"modelInvariantId": "network-instance-model-invariant-id",
"modelVersionId": "network-instance-model-version-id",
"modelCustomizationId": "network-instance-model-customization-id",
"modelName": "modelName",
"modelType": "vpnBinding"
},
"uuid": "network-instance-model-version-id",
"productFamilyId": null,
"lcpCloudRegionId": null,
"legacyRegion": null,
"tenantId": null,
"lineOfBusiness": null,
"platformName": null
}
}
}
},
"vnfs": {},
"instanceParams": [
{}
],
"validationCounter": 0,
"existingNames": {
"dfd": ""
},
"existingVNFCounterMap": {},
"existingVRFCounterMap": {},
"existingVnfGroupCounterMap": {},
"existingNetworksCounterMap": {},
"optionalGroupMembersMap": {},
"networks": {},
"vnfGroups": {},
"bulkSize": 1,
"instanceName": "dfd",
"globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
"subscriptionServiceType": "TYLER SILVIA",
"owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
"lcpCloudRegionId": "lcpCloudRegionId",
"tenantName": "tenantName",
"projectName": "WATKINS",
"rollbackOnFailure": "true",
"aicZoneName": null,
"owningEntityName": "WayneHolland",
"testApi": "VNF_API",
"modelInfo": {
"modelInvariantId": "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb",
"modelVersionId": "f028b2e2-7080-4b13-91b2-94944d4c42d8",
"modelName": "infraVPN",
"modelVersion": "1.0",
"uuid": serviceModelId,
"modelUniqueId": "f028b2e2-7080-4b13-91b2-94944d4c42d8"
},
"isALaCarte": true,
"name": "infraVPN",
"version": "1.0",
"description": "ddd",
"category": "Network Service",
"uuid": serviceModelId,
"invariantUuid": "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb",
"serviceType": "BONDING",
"serviceRole": "INFRASTRUCTURE-VPN",
"vidNotions": {
"instantiationUI": "macroService",
"modelCategory": "other",
"viewEditUI": "legacy",
"instantiationType": "Macro"
},
"isEcompGeneratedNaming": true,
"isMultiStepDesign": false
}
},
"categoryParameters": {
"owningEntityList": [
{
"id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
"name": "WayneHolland"
}
]
},
}
}
}
function initDrawingBoardWithColectionResource(serviceModelId: string) {
const redux = reduxWithVrf(serviceModelId);
cy.setReduxState(<any>redux);
cy.openIframe(`app/ui/#/servicePlanning?serviceModelId=${serviceModelId}`);
return redux;
}
function checkNetworkTableHeaders() {
cy.get('.header-title').contains('Name');
cy.get('.header-title').contains('Type');
cy.get('.header-title').contains('Role');
cy.get('.header-title').contains('Orch. Status');
cy.get('.header-title').contains('Physical name');
cy.get('.header-title').contains('Instance ID');
cy.get('.header-title').contains('Model UUID');
cy.get('.header-title').contains('Service name');
cy.get('.header-title').contains('Service UUID');
cy.get('.header-title').contains('Tenant');
cy.get('.header-title').contains('Region');
const headerTitles: string[] = [
'Network instance name',
'Instance version',
'Network model'
];
}
function checkVPNTableHeaders() {
const headerTitles: string[] = [
'VPN instance name',
'Version',
'Instance ID',
'Platform',
'Region',
'Route target',
'Route target role',
'Customer VPN ID'
];
headerTitles.forEach((title: string) => {
cy.get('.header-title').contains(title);
});
}
function checkNetworkPopupTitles() {
cy.get('.title').contains('Associate network');
cy.get('.title-header').contains('Select a network to associate to the VRF Entry');
cy.getElementByDataTestsId('setMembersBtn').contains('Next');
cy.getElementByDataTestsId('Orch_status').contains('Active');
cy.getElementByDataTestsId('Region').contains('lcpCloudRegionId');
cy.getElementByDataTestsId('Tenant').contains('tenantName');
}
function checkVPNPopupTitles() {
cy.get('.title').contains('Associate VPN');
cy.get('.title-header').contains('Select a VPN to associate to the VRF Entry');
cy.getElementByDataTestsId('setMembersBtn').contains('SET VPN');
}
});