Files
automatisch/packages/e2e-tests/tests/user-invitation/invitation.spec.js
2024-07-16 12:08:50 +02:00

63 lines
2.5 KiB
JavaScript

const { AdminCreateUserPage } = require('../../fixtures/admin/create-user-page');
const { publicTest, expect } = require('../../fixtures/index');
const { client } = require('../../fixtures/postgres-client-config');
const { DateTime } = require('luxon');
publicTest.describe('Accept invitation page', () => {
publicTest.beforeAll(async () => {
await client.connect();
});
publicTest.afterAll(async () => {
await client.end();
});
publicTest('should not be able to set the password if token is empty', async ({ acceptInvitationPage }) => {
await acceptInvitationPage.open('');
await acceptInvitationPage.excpectSubmitButtonToBeDisabled();
await acceptInvitationPage.fillPasswordField('something');
await acceptInvitationPage.excpectSubmitButtonToBeDisabled();
});
publicTest('should not be able to set the password if token is expired', async ({ acceptInvitationPage, page }) => {
const expiredTokenDate = DateTime.now().minus({days: 3}).toISO();
const expiredToken = (Math.random() + 1).toString(36).substring(2);
const adminCreateUserPage = new AdminCreateUserPage(page);
adminCreateUserPage.seed(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER));
const user = adminCreateUserPage.generateUser();
const queryRole = {
text: 'SELECT * FROM roles WHERE name = $1',
values: ['Admin']
};
try {
const queryRoleIdResult = await client.query(queryRole);
expect(queryRoleIdResult.rowCount).toEqual(1);
const insertUser = {
text: 'INSERT INTO users (email, full_name, role_id, status, invitation_token, invitation_token_sent_at) VALUES ($1, $2, $3, $4, $5, $6)',
values: [user.email, user.fullName, queryRoleIdResult.rows[0].id, 'invited', expiredToken, expiredTokenDate],
};
const insertUserResult = await client.query(insertUser);
expect(insertUserResult.rowCount).toBe(1);
expect(insertUserResult.command).toBe('INSERT');
} catch (err) {
console.error(err.message);
throw err;
}
await acceptInvitationPage.open(expiredToken);
await acceptInvitationPage.acceptInvitation('something');
await acceptInvitationPage.expectAlertToBeVisible();
});
publicTest('should not be able to set the password if token is not in db', async ({ acceptInvitationPage }) => {
await acceptInvitationPage.open('abc');
await acceptInvitationPage.acceptInvitation('something');
await acceptInvitationPage.expectAlertToBeVisible();
});
});