2470-account_e2e #980

Merged
carlosjr merged 6 commits from 2470-account_e2e into dev 2022-05-25 07:32:22 +00:00
6 changed files with 113 additions and 48 deletions
Showing only changes of commit 34bcdf1bd3 - Show all commits

View File

@ -2544,3 +2544,7 @@ INSERT INTO `vn`.`supplierAgencyTerm` (`agencyFk`, `supplierFk`, `minimumPackage
(3, 2, 0, 15.00, 0.00, NULL, 0, 0.00, 0),
(4, 2, 0, 20.00, 0.00, NULL, 0, 0.00, 0),
(5, 442, 0, 0.00, 3.05, NULL, 0, 0.00, 0);
INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
alexm marked this conversation as resolved Outdated

is this code supposed to be here?

is this code supposed to be here?
VALUES
('UserAccount', '*', '*', 'ALLOW', 'ROLE', 'sysadmin');

View File

@ -103,9 +103,8 @@ export default {
},
accountAcl: {
addAcl: 'vn-acl-index button vn-icon[icon="add"]',
firstAcl: 'vn-acl-index vn-list:nth-child(1)',
firstAclName: 'vn-acl-index vn-list:nth-child(1) > vn-item-section > h6',
deleteFirstAcl: 'vn-acl-index vn-list:nth-child(1) vn-icon-button[icon="delete"]',
thirdAcl: 'vn-acl-index vn-list> a:nth-child(3)',
deleteThirdAcl: 'vn-acl-index vn-list > a:nth-child(3) > vn-item-section > vn-icon-button[icon="delete"]',
role: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.principalId"]',
model: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.model"]',
property: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.property"]',
@ -113,6 +112,18 @@ export default {
permission: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.permission"]',
save: 'vn-acl-create vn-submit'
},
accountConnections: {
firstConnection: 'vn-connections vn-list > a:nth-child(1)',
deleteFirstConnection: 'vn-connections vn-list > a:nth-child(1) > vn-item-section > vn-icon-button[icon="exit_to_app"]'
},
accountAccounts: {
syncRoles: 'vn-account-accounts vn-button[label="Synchronize roles"]',
syncUser: 'vn-account-accounts vn-button[label="Synchronize user"]',
syncAll: 'vn-account-accounts vn-button[label="Synchronize all"]',
syncUserName: 'vn-textfield[ng-model="$ctrl.syncUser"]',
syncUserPassword: 'vn-textfield[ng-model="$ctrl.syncPassword"]',
buttonAccept: 'button[response="accept"]'
},
clientsIndex: {
createClientButton: `vn-float-button`
},

View File

@ -1,14 +1,14 @@
import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
fdescribe('Account ACL path', () => {
describe('Account ACL path', () => {
let browser;
let page;
beforeAll(async() => {
browser = await getBrowser();
page = browser.page;
await page.loginAndModule('sysadmin', 'account');
await page.loginAndModule('developer', 'account');
await page.accessToSection('account.acl');
});
@ -23,7 +23,7 @@ fdescribe('Account ACL path', () => {
it('should create new acl', async() => {
await page.autocompleteSearch(selectors.accountAcl.role, 'trainee');
await page.autocompleteSearch(selectors.accountAcl.model, 'ACL');
await page.autocompleteSearch(selectors.accountAcl.model, 'Campaign');
await page.autocompleteSearch(selectors.accountAcl.accessType, 'WRITE');
await page.autocompleteSearch(selectors.accountAcl.permission, 'DENY');
await page.waitToClick(selectors.accountAcl.save);
@ -34,11 +34,11 @@ fdescribe('Account ACL path', () => {
it('should navigate to edit', async() => {
await page.doSearch();
await page.waitToClick(selectors.accountAcl.firstAcl);
await page.waitToClick(selectors.accountAcl.thirdAcl);
await page.waitForState('account.acl.edit');
});
it('should edit the acl', async() => {
it('should edit the third acl', async() => {
await page.autocompleteSearch(selectors.accountAcl.model, 'AccessToken');
await page.autocompleteSearch(selectors.accountAcl.accessType, 'READ');
alexm marked this conversation as resolved
Review

isn't this one READ already?

isn't this one READ already?
await page.waitToClick(selectors.accountAcl.save);
@ -47,46 +47,14 @@ fdescribe('Account ACL path', () => {
expect(message.text).toContain('Data saved!');
});
it('should delete the first result', async() => {
const firstResult = await page.waitToGetProperty(selectors.accountAcl.firstAclName, 'value');
await page.waitToClick(selectors.accountAcl.deleteFirstAcl);
await page.reloadSection('account.acl');
const newFirstResult = await page.waitToGetProperty(selectors.accountAcl.firstAclName, 'value');
it('should delete the third result', async() => {
const firstResult = await page.waitToGetProperty(selectors.accountAcl.thirdAcl, 'innerText');
alexm marked this conversation as resolved Outdated

first result using selector of the thirdAcl?

first result using selector of the thirdAcl?
await page.waitToClick(selectors.accountAcl.deleteThirdAcl);
await page.waitToClick(selectors.globalItems.acceptButton);
const message = await page.waitForSnackbar();
const newFirstResult = await page.waitToGetProperty(selectors.accountAcl.thirdAcl, 'innerText');
alexm marked this conversation as resolved Outdated

newFirst?

newFirst?
expect(message.text).toContain('ACL removed');
expect(firstResult).not.toEqual(newFirstResult);
});
/*
it('should check the role description was edited successfully', async() => {
const result = await page.waitToGetProperty(selectors.accountRoleBasicData.description, 'value');
expect(result).toContain('psykers');
});
it('should navigate to the subroles section', async() => {
await page.accessToSection('account.role.card.subroles');
});
it('should asign a subrole', async() => {
await page.waitToClick(selectors.accountSubroles.addSubrole);
await page.autocompleteSearch(selectors.accountSubroles.role, 'teamManager');
await page.waitToClick(selectors.accountSubroles.save);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Role added!');
});
it('should reload the subroles section and check a role was added', async() => {
await page.reloadSection('account.role.card.subroles');
const subrolesCount = await page.countElement(selectors.accountSubroles.anyResult);
expect(subrolesCount).toEqual(1);
});
it('should access the employee roles inheritance then check the roles listed are the expected ones', async() => {
await page.accessToSearchResult('employee');
await page.accessToSection('account.role.card.inherited');
const rolesCount = await page.countElement(selectors.accountRoleInheritance.anyResult);
expect(rolesCount).toEqual(6);
});*/
});

View File

@ -0,0 +1,33 @@
import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
describe('Account Connections path', () => {
let browser;
let page;
const account = 'sysadmin';
beforeAll(async() => {
browser = await getBrowser();
page = browser.page;
await page.loginAndModule(account, 'account');
await page.accessToSection('account.connections');
});
afterAll(async() => {
await browser.close();
});
it('should check this is the last connection', async() => {
const firstResult = await page.waitToGetProperty(selectors.accountConnections.firstConnection, 'innerText');
expect(firstResult).toContain(account);
});
it('should kill this connection', async() => {
alexm marked this conversation as resolved Outdated

"should kill this connection and then get redirected to the login page" this makes easier the code maintenance helping to understand what the test is actually doing

"should kill this connection and then get redirected to the login page" this makes easier the code maintenance helping to understand what the test is actually doing
await page.waitToClick(selectors.accountConnections.deleteFirstConnection);
await page.waitToClick(selectors.globalItems.acceptButton);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Your session has expired, please login again');
});
});

View File

@ -0,0 +1,49 @@
import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
describe('Account Connections path', () => {
let browser;
let page;
beforeAll(async() => {
browser = await getBrowser();
page = browser.page;
await page.loginAndModule('sysadmin', 'account');
await page.accessToSection('account.accounts');
});
afterAll(async() => {
await browser.close();
});
it('should sync roles', async() => {
await page.waitToClick(selectors.accountAccounts.syncRoles);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Roles synchronized!');
});
it('should sync user', async() => {
await page.waitToClick(selectors.accountAccounts.syncUser);
await page.write(selectors.accountAccounts.syncUserName, 'sysadmin');
await page.write(selectors.accountAccounts.syncUserPassword, 'nightmare');
await page.waitToClick(selectors.accountAccounts.buttonAccept);
const message = await page.waitForSnackbar();
expect(message.text).toContain('User synchronized!');
});
it('should relogin', async() => {
await page.loginAndModule('sysadmin', 'account');
await page.accessToSection('account.accounts');
});
it('should sync all', async() => {
await page.waitToClick(selectors.accountAccounts.syncAll);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Synchronizing in the background');
});
});