mirror of
https://github.com/documenso/documenso.git
synced 2025-11-12 07:43:16 +10:00
103 lines
2.9 KiB
TypeScript
103 lines
2.9 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
|
|
import { seedTeam, seedTeamEmailVerification, unseedTeam } from '@documenso/prisma/seed/teams';
|
|
import { seedUser, unseedUser } from '@documenso/prisma/seed/users';
|
|
|
|
import { apiSignin } from '../fixtures/authentication';
|
|
|
|
test.describe.configure({ mode: 'parallel' });
|
|
|
|
test('[TEAMS]: send team email request', async ({ page }) => {
|
|
const team = await seedTeam();
|
|
|
|
await apiSignin({
|
|
page,
|
|
email: team.owner.email,
|
|
password: 'password',
|
|
redirectPath: `/t/${team.url}/settings`,
|
|
});
|
|
|
|
await page.getByRole('button', { name: 'Add email' }).click();
|
|
await page.getByPlaceholder('eg. Legal').click();
|
|
await page.getByPlaceholder('eg. Legal').fill('test@test.documenso.com');
|
|
await page.getByPlaceholder('example@example.com').click();
|
|
await page.getByPlaceholder('example@example.com').fill('test@test.documenso.com');
|
|
await page.getByRole('button', { name: 'Add' }).click();
|
|
|
|
await expect(
|
|
page
|
|
.getByRole('status')
|
|
.filter({ hasText: 'We have sent a confirmation email for verification.' })
|
|
.first(),
|
|
).toBeVisible();
|
|
|
|
await unseedTeam(team.url);
|
|
});
|
|
|
|
test('[TEAMS]: accept team email request', async ({ page }) => {
|
|
const team = await seedTeam({
|
|
createTeamMembers: 1,
|
|
});
|
|
|
|
const teamEmailVerification = await seedTeamEmailVerification({
|
|
email: 'team-email-verification@test.documenso.com',
|
|
teamId: team.id,
|
|
});
|
|
|
|
await page.goto(`${WEBAPP_BASE_URL}/team/verify/email/${teamEmailVerification.token}`);
|
|
await expect(page.getByRole('heading')).toContainText('Team email verified!');
|
|
|
|
await unseedTeam(team.url);
|
|
});
|
|
|
|
test('[TEAMS]: delete team email', async ({ page }) => {
|
|
const team = await seedTeam({
|
|
createTeamMembers: 1,
|
|
createTeamEmail: true,
|
|
});
|
|
|
|
await apiSignin({
|
|
page,
|
|
email: team.owner.email,
|
|
redirectPath: `/t/${team.url}/settings`,
|
|
});
|
|
|
|
await page.locator('section div').filter({ hasText: 'Team email' }).getByRole('button').click();
|
|
|
|
await page.getByRole('menuitem', { name: 'Remove' }).click();
|
|
|
|
await expect(page.getByText('Team email has been removed').first()).toBeVisible();
|
|
|
|
await unseedTeam(team.url);
|
|
});
|
|
|
|
test('[TEAMS]: team email owner removes access', async ({ page }) => {
|
|
const team = await seedTeam({
|
|
createTeamMembers: 1,
|
|
createTeamEmail: true,
|
|
});
|
|
|
|
if (!team.teamEmail) {
|
|
throw new Error('Not possible');
|
|
}
|
|
|
|
const teamEmailOwner = await seedUser({
|
|
email: team.teamEmail.email,
|
|
});
|
|
|
|
await apiSignin({
|
|
page,
|
|
email: teamEmailOwner.email,
|
|
redirectPath: `/settings/teams`,
|
|
});
|
|
|
|
await page.getByRole('button', { name: 'Revoke access' }).click();
|
|
await page.getByRole('button', { name: 'Revoke' }).click();
|
|
|
|
await expect(page.getByText('You have successfully revoked').first()).toBeVisible();
|
|
|
|
await unseedTeam(team.url);
|
|
await unseedUser(teamEmailOwner.id);
|
|
});
|