summaryrefslogtreecommitdiffstats
path: root/public/cypress/integration/mocks/ruleEngine-spec.ts
diff options
context:
space:
mode:
Diffstat (limited to 'public/cypress/integration/mocks/ruleEngine-spec.ts')
-rw-r--r--public/cypress/integration/mocks/ruleEngine-spec.ts643
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());
});