قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-22 15:07:44 +00:00

* [Coding Style] Enable rule PSR12.Files.FileHeader * Apply CS * Replace Piwik with Matomo in file headers * Unify file headers (position, no. of lines, https links) * Rebuild dist files * Apply CS * Fix system test that relies on line numbers in a file that had the file header updated --------- Co-authored-by: Stefan Giehl <stefan@matomo.org>
151 خطوط
5.3 KiB
JavaScript
151 خطوط
5.3 KiB
JavaScript
/*!
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* UsersManager screenshot tests.
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
describe('UsersManager_AnonymousUser', function () {
|
|
this.fixture = "Piwik\\Plugins\\UsersManager\\tests\\Fixtures\\AnonymousUser";
|
|
|
|
const url = "?module=UsersManager&action=index";
|
|
|
|
function getUserAccess(userName) {
|
|
return page.evaluate(
|
|
(userName) => {
|
|
return $(`#manageUsersTable #userLogin:contains(${userName}) + .access-cell li[role="option"][aria-selected="true"]`)
|
|
.text()
|
|
.trim()
|
|
},
|
|
userName
|
|
);
|
|
}
|
|
|
|
async function abortPasswordConfirmation() {
|
|
await page.$('.confirm-password-modal.open', { visible: true });
|
|
await page.waitForTimeout(300);
|
|
await (await page.jQuery('.confirm-password-modal.open .modal-close.modal-no:visible')).click();
|
|
await page.$('.confirm-password-modal.open', { hidden: true });
|
|
await page.waitForTimeout(300);
|
|
}
|
|
|
|
async function confirmPassword() {
|
|
await page.$('.confirm-password-modal.open', { visible: true });
|
|
await page.waitForTimeout(300);
|
|
|
|
await page.evaluate((superUserPassword) => {
|
|
$('.confirm-password-modal input[name=currentUserPassword]:visible')
|
|
.val(superUserPassword)
|
|
.change();
|
|
}, superUserPassword);
|
|
|
|
await page.waitForTimeout(250);
|
|
await (await page.jQuery('.confirm-password-modal.open .modal-close:not(.modal-no):visible')).click();
|
|
await page.$('.confirm-password-modal.open', { hidden: true });
|
|
await page.waitForTimeout(300);
|
|
await page.waitForNetworkIdle();
|
|
}
|
|
|
|
async function confirmRoleChange() {
|
|
await page.$('.change-user-role-confirm-modal.open', { visible: true });
|
|
await page.waitForTimeout(300);
|
|
await (await page.jQuery('.change-user-role-confirm-modal.open .modal-close:not(.modal-no):visible')).click();
|
|
await page.$('.change-user-role-confirm-modal.open', { hidden: true });
|
|
await page.waitForTimeout(300);
|
|
await page.waitForNetworkIdle();
|
|
}
|
|
|
|
it('should start with a known list of users', async function () {
|
|
await page.goto(url);
|
|
await page.waitForNetworkIdle();
|
|
|
|
expect(await getUserAccess('anonymous')).to.equal('No access');
|
|
expect(await getUserAccess('regularUser')).to.equal('No access');
|
|
});
|
|
|
|
describe('single user handling', function () {
|
|
async function setUserAccess(userName, accessString) {
|
|
await page.evaluate(
|
|
(userName, accessString) => {
|
|
$(`#manageUsersTable #userLogin:contains(${userName}) + .access-cell select`)
|
|
.val(accessString)
|
|
.change();
|
|
},
|
|
userName, accessString
|
|
)
|
|
}
|
|
|
|
it('should reset selected access if confirmation is aborted', async function () {
|
|
await setUserAccess('anonymous', 'string:view');
|
|
await abortPasswordConfirmation();
|
|
|
|
expect(await getUserAccess('anonymous')).to.equal('No access');
|
|
});
|
|
|
|
it('should show a password confirmation when giving access to anonymous user', async function () {
|
|
await setUserAccess('anonymous', 'string:view');
|
|
await confirmPassword();
|
|
|
|
expect(await getUserAccess('anonymous')).to.equal('View');
|
|
});
|
|
|
|
it('should not show a password confirmation when revoking access for anonymous user', async function () {
|
|
await setUserAccess('anonymous', 'string:noaccess');
|
|
await confirmRoleChange();
|
|
|
|
expect(await getUserAccess('anonymous')).to.equal('No access');
|
|
});
|
|
});
|
|
|
|
describe('bulk user handling', function() {
|
|
async function bulkRemovePermissions() {
|
|
await page.click('.bulk-actions.btn');
|
|
await page.waitForTimeout(350);
|
|
await (await page.jQuery('#user-list-bulk-actions a:contains(Remove Permissions)')).click();
|
|
await page.waitForTimeout(350);
|
|
}
|
|
|
|
async function bulkSelectAll() {
|
|
await page.click('th.select-cell input + span');
|
|
}
|
|
|
|
async function bulkSetViewAccess() {
|
|
await page.click('.bulk-actions.btn');
|
|
await page.waitForTimeout(350);
|
|
await (await page.jQuery('a[data-target=bulk-set-access]')).hover();
|
|
await page.waitForTimeout(350);
|
|
await (await page.jQuery('#bulk-set-access a:contains(View)')).click();
|
|
await page.waitForTimeout(350);
|
|
}
|
|
|
|
it('should reset selected access if confirmation is aborted', async function () {
|
|
await bulkSelectAll();
|
|
await bulkSetViewAccess();
|
|
await abortPasswordConfirmation();
|
|
|
|
expect(await getUserAccess('anonymous')).to.equal('No access');
|
|
expect(await getUserAccess('regularUser')).to.equal('No access');
|
|
});
|
|
|
|
it('should show a password confirmation giving access to multiple users including anonymous', async function () {
|
|
// all users already selected from previous test
|
|
await bulkSetViewAccess();
|
|
await confirmPassword();
|
|
|
|
expect(await getUserAccess('anonymous')).to.equal('View');
|
|
expect(await getUserAccess('regularUser')).to.equal('View');
|
|
});
|
|
|
|
it('should not show a password confirmation when revoking access for multiple users including anonymous', async function () {
|
|
await bulkSelectAll();
|
|
await bulkRemovePermissions();
|
|
await confirmRoleChange();
|
|
|
|
expect(await getUserAccess('anonymous')).to.equal('No access');
|
|
expect(await getUserAccess('regularUser')).to.equal('No access');
|
|
});
|
|
});
|
|
});
|