diff options
Diffstat (limited to 'public/cypress/integration/mocks/ruleEngine-spec.ts')
-rw-r--r-- | public/cypress/integration/mocks/ruleEngine-spec.ts | 643 |
1 files changed, 625 insertions, 18 deletions
diff --git a/public/cypress/integration/mocks/ruleEngine-spec.ts b/public/cypress/integration/mocks/ruleEngine-spec.ts index 9a75b87..d2c0b69 100644 --- a/public/cypress/integration/mocks/ruleEngine-spec.ts +++ b/public/cypress/integration/mocks/ruleEngine-spec.ts @@ -2,6 +2,14 @@ export const mappingTragetDDL = () => { return cy.get('select[data-tests-id="mappingDdl"]'); }; +export const getExistRulesList = () => { + return cy.get('option[data-tests-id="templateOptionsExist"]'); +}; + +export const getNotExistRulesList = () => { + return cy.get('option[data-tests-id="templateOptionsNotExist"]'); +}; + export const selectVersionAndTypeAndAddFirstRule = () => { return cy .get('select[data-tests-id="selectVersion"]') @@ -12,13 +20,55 @@ export const selectVersionAndTypeAndAddFirstRule = () => { .click(); }; -export const fillRuleDecription = text => { +export const fillRuleDescription = text => { return cy .get('input[data-tests-id="inputDescription"]') .clear() .type(text); }; +export const addMapAndDeleteRowAction = () => { + cy.get('select[data-tests-id="selectAction"]').select('map'); + cy.get('button[data-tests-id="btnAddAction"]').click(); + // fill map action + cy + .get('input[data-tests-id="valueInput"]') + .first() + .type('B') + .should('have.value', 'B'); + + return cy + .get('input[data-tests-id="key"]') + .type('Key1') + .should('have.value', 'Key1') + .get('input[data-tests-id="value"]') + .type('Key1') + .should('have.value', 'Key1') + .get('button[data-tests-id="btn-add-row"]') + .click() + .get('input[data-tests-id="key"]') + .last() + .type('Key2') + .should('have.value', 'Key2') + .get('input[data-tests-id="value"]') + .last() + .type('Key2') + .should('have.value', 'Key2') + .get('button[data-tests-id="btn-add-row"]') + .click() + .get('input[data-tests-id="key"]') + .last() + .type('Key3') + .should('have.value', 'Key3') + .get('input[data-tests-id="value"]') + .last() + .type('Key3') + .should('have.value', 'Key3') + .get('button[data-tests-id="btn-remove-row"]') + .last() + .click(); +}; + export const addCopyAction = () => { return cy .get('select[data-tests-id="selectAction"]') @@ -27,6 +77,7 @@ export const addCopyAction = () => { .click() .get('input[data-tests-id="valueInput"]') .type('A') + .should('have.value', 'A') .get('span[data-tests-id="openTargetTree"]') .click() .get('.bottom-select') @@ -56,11 +107,71 @@ export const editFirstRule = () => { .click(); }; -export const translateValue = () => { - return '{"processing":[{"phase":"snmp_map","processors":[{"array":"varbinds","datacolumn":"varbind_value","keycolumn":"varbind_oid","class":"SnmpConvertor"},{"phase":"sto2","class":"RunPhase"}]},{"phase":"sto2","processors":[{"updates":{"event.commonEventHeader.domain":"a"},"class":"Set"}]},{"phase":"sto2","processors":[{"phase":"map_publish","class":"RunPhase"}]}]}'; +export const editLastRule = () => { + return cy + .get('div[data-tests-id="ruleElement"]') + .last() + .trigger('mouseover') + .get('button[data-tests-id="editRule"]') + .should('be.visible') + .click(); }; +export const deleteFirstRule = () => { + cy + .get('div[data-tests-id="ruleElement"]') + .first() + .trigger('mouseover') + .get('button[data-tests-id="deleteRule"]') + .should('be.visible') + .click() + .get('div[data-tests-id="delete-popup"]'); + + cy.deleteRule(); + return cy.get('button[data-tests-id="btnDelete"]').click(); +}; + +export const translateValue = () => { + return ( + '{"processing":[{"phase":"snmp_map","processors":[{"array":"varbinds","datacolumn' + + '":"varbind_value","keycolumn":"varbind_oid","class":"SnmpConvertor"},{"phase":"s' + + 'to2","class":"RunPhase"}]},{"phase":"sto2","processors":[{"updates":{"event.comm' + + 'onEventHeader.domain":"a"},"class":"Set"}]},{"phase":"sto2","processors":[{"phas' + + 'e":"map_publish","class":"RunPhase"}]}]}' + ); +}; +const NUMBER_OF_EXIST_ITEMS = 3; +const NUMBER_OF_NOT_EXIST_ITEMS = 16; describe('Rule engine - E2E test flow with mock', () => { + describe('Checking rules exist and not exist separation', () => { + beforeEach(() => { + cy.httpGenerateMappingRulesFileName(); + cy.httpGetDDLData(); + cy.getMCListEmpty(); + cy.homePage(); + cy.get('button[data-tests-id="btn-create-mc"]').click(); + cy.fillNewMcForm(); + cy.httpCreateNewMc(); + cy.emptyRuleEngine('Type1'); + cy.get('button[data-tests-id="createMonitoring"]').click(); + cy + .get('#ui-tabpanel-1-label') + .should('contain', 'map') + .click(); + }); + it('In exist group contain 3 visible options and not exist 16 visible', () => { + mappingTragetDDL() + .should('be.visible') + .contains('json'); + getExistRulesList() + .not('[hidden]') + .should('have.length', NUMBER_OF_EXIST_ITEMS); + getNotExistRulesList() + .not('[hidden]') + .should('have.length', NUMBER_OF_NOT_EXIST_ITEMS); + }); + }); + describe('Mapping target select', () => { beforeEach(() => { cy.httpGetDDLData(); @@ -82,25 +193,521 @@ describe('Rule engine - E2E test flow with mock', () => { .should('be.visible') .contains('json'); }); + }); - it('should page refrash after change select value in mapping target ddl', () => { + describe('Fill all available Actions', () => { + beforeEach(() => { + cy.httpGetDDLData(); + cy.getMCListEmpty(); + cy.homePage(); + cy.get('button[data-tests-id="btn-create-mc"]').click(); + cy.fillNewMcForm(); + cy.httpCreateNewMc(); + cy.emptyRuleEngine('Type1'); + cy + .get('button[data-tests-id="createMonitoring"]') + .click() + .get('#ui-tabpanel-1-label') + .should('contain', 'map') + .click(); cy.httpTargetTree(); + selectVersionAndTypeAndAddFirstRule(); + fillRuleDescription('newRule'); + }); + + it('add copy action', () => { + addCopyAction(); + }); + + it('add concat action', () => { + cy.get('select[data-tests-id="selectAction"]').select('concat'); + cy.get('button[data-tests-id="btnAddAction"]').click(); + // fill concat action cy - .get('select[data-tests-id="selectVersion"]') - .select('4.1') - .get('select[data-tests-id="selectEventType"]') - .select('syslog') - .get('button[data-tests-id="btnAddFirstRule"]') - .should('be.visible'); - cy.emptyRuleEngine('json'); - mappingTragetDDL() - .select('json') - .get('select[data-tests-id="selectVersion"]') - .should('have.value', null); + .get('input[data-tests-id="valueInput"]') + .first() + .type('A') + .should('have.value', 'A'); + cy + .get('input[data-tests-id="valueInput"]') + .last() + .type('B') + .should('have.value', 'B'); + cy + .get('span[data-tests-id="openTargetTree"]') + .click() + .get('.bottom-select') + .should('be.visible') + .find('.toggle-children') + .first() + .click(); + + cy + .get('span[data-tests-id="targetNode"]') + .should(node => { + expect(node.eq(0)).to.contain('commonEventHeader'); + expect(node.eq(1)).to.contain('domain'); + }) + .each(($el, index) => { + if (index === 1) { + cy.wrap($el).click(); + } + }); + + cy + .get('input[data-tests-id="inputTarget"]') + .should('have.value', 'event.commonEventHeader.domain'); + }); + + it('add map action', () => { + addMapAndDeleteRowAction(); + + cy + .get('span[data-tests-id="openTargetTree"]') + .click() + .get('.bottom-select') + .should('be.visible') + .find('.toggle-children') + .first() + .click(); + + cy + .get('span[data-tests-id="targetNode"]') + .should(node => { + expect(node.eq(0)).to.contain('commonEventHeader'); + expect(node.eq(1)).to.contain('domain'); + }) + .each(($el, index) => { + if (index === 1) { + cy.wrap($el).click(); + } + }); + + cy.get('input[data-tests-id="defaultCheckbox"]').click(); + cy.get('input[data-tests-id="defaultInput"]').type('default value'); + + cy + .get('input[data-tests-id="inputTarget"]') + .should('have.value', 'event.commonEventHeader.domain'); + }); + + it('add date-formatter action', () => { + cy.get('select[data-tests-id="selectAction"]').select('date formatter'); + cy.get('button[data-tests-id="btnAddAction"]').click(); + + // fill date-formatter action Section 1 + cy + .get('input[data-tests-id="valueInput"]') + .first() + .type('A') + .should('have.value', 'A') + .get('span[data-tests-id="openTargetTree"]') + .click() + .get('.bottom-select') + .should('be.visible') + .find('.toggle-children') + .first() + .click() + .get('span[data-tests-id="targetNode"]') + .should(node => { + expect(node.eq(0)).to.contain('commonEventHeader'); + expect(node.eq(1)).to.contain('domain'); + }) + .each(($el, index) => { + if (index === 1) { + cy.wrap($el).click(); + } + }); + cy + .get('input[data-tests-id="inputTarget"]') + .should('have.value', 'event.commonEventHeader.domain'); + + // Section 2 + cy + .get('input[data-tests-id="InputFromFormat"]') + .type('04/03/2018') + .should('have.value', '04/03/2018') + .get('input[data-tests-id="InputFromTimezone"]') + .type('11:50:00') + .should('have.value', '11:50:00') + .get('input[data-tests-id="InputToFormat"]') + .type('04/08/2018') + .should('have.value', '04/08/2018') + .get('input[data-tests-id="InputToTimezone"]') + .type('11:50:00') + .should('have.value', '11:50:00'); + }); + + it('add conditional action', () => { + cy + .get('input[data-tests-id="isCondition"]') + .click() + .get('input[data-tests-id="left"]') + .type('ABC') + .should('have.value', 'ABC'); + + cy + .get('select[data-tests-id="selectOperator"]') + .select('startsWith') + .get('input[data-tests-id="right"]') + .type('A') + .should('have.value', 'A'); + + cy + .get('button[data-tests-id="addCondition"]') + .click() + .get('input[data-tests-id="left"]') + .last() + .type('DEF') + .should('have.value', 'DEF'); + + cy + .get('select[data-tests-id="selectOperator"]') + .last() + .select('endsWith') + .get('input[data-tests-id="right"]') + .last() + .type('F') + .should('have.value', 'F'); + + cy + .get('button[data-tests-id="addCondition"]') + .click() + .get('input[data-tests-id="left"]') + .last() + .type('HIJ') + .should('have.value', 'HIJ'); + + cy + .get('select[data-tests-id="selectOperator"]') + .last() + .select('equals') + .get('input[data-tests-id="right"]') + .last() + .type('HHH') + .should('have.value', 'HHH'); + + cy + .get('button[data-tests-id="RemoveCondition"]') + .last() + .click() + .get('button[data-tests-id="addConditionGroup"]') + .click(); + + // try to delete element (1 of 2 items in group) + cy + .get('button[data-tests-id="RemoveCondition"]') + .last() + .click() + .get('input[data-tests-id="left"]') + .eq(2) + .type('KLM') + .should('have.value', 'KLM'); + + cy + .get('select[data-tests-id="selectOperator"]') + .eq(2) + .select('notEqual') + .get('input[data-tests-id="right"]') + .eq(2) + .type('MMM') + .should('have.value', 'MMM') + .get('input[data-tests-id="left"]') + .last() + .type('NOP') + .should('have.value', 'NOP'); + + cy + .get('select[data-tests-id="selectOperator"]') + .last() + .select('contains') + .get('input[data-tests-id="right"]') + .last() + .type('PPP') + .should('have.value', 'PPP'); + + cy + .get('button[data-tests-id="addCondition"]') + .last() + .click() + .get('input[data-tests-id="left"]') + .last() + .type('QQQ') + .should('have.value', 'QQQ'); + + cy + .get('select[data-tests-id="selectOperator"]') + .last() + .select('endsWith') + .get('input[data-tests-id="right"]') + .last() + .type('Q') + .should('have.value', 'Q') + .get('button[data-tests-id="RemoveCondition"]') + .last() + .click(); + + cy + .get('button[data-tests-id="removeConditionNode"]') + .last() + .click(); + }); + + it('add clear action', () => { + cy + .get('select[data-tests-id="selectAction"]') + .select('clear') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('input[data-tests-id="valueInput"]') + .type('ABC') + .should('have.value', 'ABC'); + + cy + .get('button[data-tests-id="btnAddInput"]') + .click() + .get('input[data-tests-id="valueInput"]') + .last() + .type('DEA') + .should('have.value', 'DEA'); + + cy + .get('button[data-tests-id="btnDelete"]') + .first() + .click(); + }); + + it('add replace text action', () => { + cy + .get('select[data-tests-id="selectAction"]') + .select('replace text') + .get('button[data-tests-id="btnAddAction"]') + .click(); + + cy + .get('input[data-tests-id="valueInput"]') + .type('ABC') + .should('have.value', 'ABC'); + + cy + .get('input[data-tests-id="InputFindWhat"]') + .type('AAA') + .should('have.value', 'AAA'); + + cy + .get('input[data-tests-id="InputReplaceWith"]') + .type('BBB') + .should('have.value', 'BBB'); + }); + + it('add log text action', () => { + cy + .get('select[data-tests-id="selectAction"]') + .select('log text') + .get('button[data-tests-id="btnAddAction"]') + .click(); + + cy + .get('input[data-tests-id="InputLogText"]') + .type('ABC') + .should('have.value', 'ABC'); + + cy + .get('input[data-tests-id="InputLogName"]') + .type('AAA') + .should('have.value', 'AAA'); + + cy + .get('input[data-tests-id="InputLogLevel"]') + .type('BBB') + .should('have.value', 'BBB'); + }); + + it('add log event action', () => { + cy + .get('select[data-tests-id="selectAction"]') + .select('log event') + .get('button[data-tests-id="btnAddAction"]') + .click(); + + cy + .get('input[data-tests-id="InputLogTitle"]') + .type('Title test') + .should('have.value', 'Title test'); + }); + }); + + describe('rule and Actions CRUD Procedure', () => { + beforeEach(() => { + cy.httpGetDDLData(); + cy.getMCListEmpty(); + cy.homePage(); + cy.get('button[data-tests-id="btn-create-mc"]').click(); + cy.fillNewMcForm(); + cy.httpCreateNewMc(); + cy.emptyRuleEngine('Type1'); + cy + .get('button[data-tests-id="createMonitoring"]') + .click() + .get('#ui-tabpanel-1-label') + .should('contain', 'map') + .click(); + cy.httpTargetTree(); + selectVersionAndTypeAndAddFirstRule(); + fillRuleDescription('newRule'); + }); + + it('add clear action', () => { + cy + .get('select[data-tests-id="selectAction"]') + .select('copy') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('select[data-tests-id="selectAction"]') + .select('concat') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('select[data-tests-id="selectAction"]') + .select('map') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('select[data-tests-id="selectAction"]') + .select('date formatter') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('select[data-tests-id="selectAction"]') + .select('log text') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('select[data-tests-id="selectAction"]') + .select('log event') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('select[data-tests-id="selectAction"]') + .select('replace text') + .get('button[data-tests-id="btnAddAction"]') + .click() + .get('select[data-tests-id="selectAction"]') + .select('clear') + .get('button[data-tests-id="btnAddAction"]') + .click(); + }); + + it('add rule with copy action CRUD procedure', () => { + // Create action + addCopyAction(); + + cy.doneSaveRule(); + cy.get('button[data-tests-id="btnDone"]').click(); + + // value approve + editFirstRule(); + + cy + .get('input[data-tests-id="valueInput"]') + .should('have.value', 'a') + .get('input[data-tests-id="inputTarget"]') + .should('have.value', 'event.commonEventHeader.domain') + + // change value + .get('input[data-tests-id="valueInput"]') + .type('B') + .get('button[data-tests-id="btnSave"]') + .click(); + cy.doneSaveAndEditRule(); + cy.get('button[data-tests-id="btnDone"]').click(); + + // Delete copy action + deleteFirstRule(); + }); + + it('add multiple rules CRUD procedure', () => { + // Create actions + addCopyAction(); + cy.doneSaveRule(); + cy.get('button[data-tests-id="btnDone"]').click(); + + // Edit copy action - verify values + editFirstRule(); + + cy + .get('input[data-tests-id="valueInput"]') + .should('have.value', 'a') + .get('input[data-tests-id="inputTarget"]') + .should('have.value', 'event.commonEventHeader.domain') + .get('button[data-tests-id="btnDone"]') + .click(); + + // Add new rule with map action + cy.get('button[data-tests-id="addMoreRule"]').click(); + fillRuleDescription('newRule2'); + addMapAndDeleteRowAction(); + cy.doneSaveMapRule(); + cy.get('button[data-tests-id="btnDone"]').click(); + + // Verify map values + editLastRule(); + + cy + .get('input[data-tests-id="key"]') + .first() + .should('have.value', 'Key1') + .get('input[data-tests-id="value"]') + .first() + .should('have.value', 'Key1') + .get('input[data-tests-id="key"]') + .last() + .should('have.value', 'Key2') + .get('input[data-tests-id="value"]') + .last() + .should('have.value', 'Key2'); + cy.get('button[data-tests-id="btnDone"]').click(); + + // Delete copy Action + deleteFirstRule(); + }); + + it('add rule with log text action CRUD procedure', () => { + cy + .get('select[data-tests-id="selectAction"]') + .select('log text') + .get('button[data-tests-id="btnAddAction"]') + .click(); + + cy + .get('input[data-tests-id="InputLogText"]') + .type('ABC') + .should('have.value', 'ABC'); + + cy + .get('input[data-tests-id="InputLogName"]') + .type('AAA') + .should('have.value', 'AAA'); + + cy + .get('input[data-tests-id="InputLogLevel"]') + .type('BBB') + .should('have.value', 'BBB'); + + cy.doneSaveLogTextRule(); + cy.get('button[data-tests-id="btnDone"]').click(); + + // value assertion + editFirstRule(); + + cy + .get('input[data-tests-id="InputLogText"]') + .should('have.value', 'ABC') + .get('input[data-tests-id="InputLogName"]') + .should('have.value', 'AAA') + .get('input[data-tests-id="InputLogLevel"]') + .should('have.value', 'BBB'); + + cy.get('button[data-tests-id="btnDone"]').click(); }); }); - describe('Translate And Save Rule List', () => { + describe('Translate and save Rule List', () => { beforeEach(() => { cy.httpGetDDLData(); cy.getMCListEmpty(); @@ -117,7 +724,7 @@ describe('Rule engine - E2E test flow with mock', () => { .click(); cy.httpTargetTree(); selectVersionAndTypeAndAddFirstRule(); - fillRuleDecription('newRule'); + fillRuleDescription('newRule'); addCopyAction(); cy.doneSaveRule(); }); @@ -159,7 +766,7 @@ describe('Rule engine - E2E test flow with mock', () => { .click() .get('.toast-container') .should('be.visible') - .get('.map-setting-list > #Type1 > input') + .get('.map-setting-list > form > #Type1 > input') .should('be.visible') .and('have.value', translateValue()); }); |