| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { test as setup } from './restFixture.js';
- import { expect } from '@playwright/test';
- import fs from 'node:fs';
- import dotenv from 'dotenv';
- const _PERMISSION_CUSTOMERS_READ = 0x40;
- const _ADMINISTRATOR_USERNAME = 'administrator';
- let administrator_password;
- setup.beforeAll(async ({ playwright }) => {
- const envFile = fs.readFileSync('../.env');
- const env = dotenv.parse(envFile);
- administrator_password = env.IRIS_ADM_PASSWORD;
- });
- async function authenticate(page, login, password) {
- await page.goto('/');
- await page.getByRole('textbox', { name: 'Username' }).fill(login);
- await page.getByRole('textbox', { name: 'Password' }).fill(password);
- await page.getByRole('button', { name: 'Sign in' }).click();
- // FIXME: It should be: await page.waitForURL('/dashboard'); No wildcard.
- // Wait until the page receives the cookies.
- await page.waitForURL('/dashboard*');
- const authFile = `./playwright/.auth/${login}.json`;
- await page.context().storageState({ path: authFile });
- }
- setup('authenticate as administrator', async ({ page }) => {
- await authenticate(page, _ADMINISTRATOR_USERNAME, administrator_password);
- });
- setup('authenticate as user with customers read rights', async ({ page, rest }) => {
- // TODO when this method is called a second time, all these request will fail
- // think about a better ways of doing things, some possible strategies
- // - find a way to create a new valid database before and empty the database after
- // - find a way to remove elements from the database to roughly get back to the initial state
- // - code so that these requests are robust (check the group exists, user exists, link between the two is set...)
- // - global setup and teardown? https://playwright.dev/docs/test-global-setup-teardown
- let response = await rest.post('/manage/groups/add', {
- data: {
- group_name: 'group_customers_r',
- group_description: 'Group with rights: customers_read',
- group_permissions: [_PERMISSION_CUSTOMERS_READ]
- }
- });
- const groupIdentifier = (await response.json()).data.group_id;
- const login = 'user_customers_r';
- const password = 'aA.1234567890';
- response = await rest.post('/manage/users/add', {
- data: {
- user_name: login,
- user_login: login,
- user_email: `${login}@eu`,
- user_password: password
- }
- });
- const userIdentifier = (await response.json()).data.id;
- response = await rest.post(`/manage/users/${userIdentifier}/groups/update`, {
- data: {
- groups_membership: [groupIdentifier]
- }
- });
- await authenticate(page, login, password);
- });
|