chore: add e2e test for deleting a user

This commit is contained in:
Ephraim Atta-Duncan
2024-03-08 00:04:27 +00:00
parent 80f767b321
commit e47ca1d6b6
4 changed files with 48 additions and 2 deletions

View File

@ -78,7 +78,9 @@ export const DeleteAccountDialog = ({ className, user }: DeleteAccountDialogProp
<div className="flex-shrink-0">
<Dialog>
<DialogTrigger asChild>
<Button variant="destructive">Delete Account</Button>
<Button variant="destructive" data-testid="delete-account-button">
Delete Account
</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader className="space-y-4">
@ -110,6 +112,7 @@ export const DeleteAccountDialog = ({ className, user }: DeleteAccountDialogProp
onClick={onDeleteAccount}
loading={isDeletingAccount}
variant="destructive"
data-testid="delete-account-confirmation-button"
disabled={hasTwoFactorAuthentication}
>
{isDeletingAccount ? 'Deleting account...' : 'Delete Account'}

View File

@ -0,0 +1,21 @@
import { test } from '@playwright/test';
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { seedUser } from '@documenso/prisma/seed/users';
import { manualLogin } from './fixtures/authentication';
test('delete user', async ({ page }) => {
const user = await seedUser();
await manualLogin({
page,
email: user.email,
redirectPath: '/settings',
});
await page.getByTestId('delete-account-button').click();
await page.getByTestId('delete-account-confirmation-button').click();
await page.waitForURL(`${WEBAPP_BASE_URL}/signin`);
});

View File

@ -12,7 +12,8 @@
"prisma:generate": "prisma generate",
"prisma:migrate-dev": "prisma migrate dev",
"prisma:migrate-deploy": "prisma migrate deploy",
"prisma:seed": "prisma db seed"
"prisma:seed": "prisma db seed",
"prisma:studio": "prisma studio"
},
"prisma": {
"seed": "ts-node --transpileOnly --project ./tsconfig.seed.json ./seed-database.ts"

View File

@ -26,6 +26,27 @@ export const seedUser = async ({
});
};
export const seed2faUser = async ({
name = `2fa-user-${Date.now()}`,
email = `2fa-user-${Date.now()}@test.documenso.com`,
password = 'password',
verified = true,
}: SeedUserOptions = {}) => {
return await prisma.user.create({
data: {
name,
email,
password: hashSync(password),
emailVerified: verified ? new Date() : undefined,
url: name,
twoFactorEnabled: true,
twoFactorSecret:
'b2840b216b1f089cb086bdd4260196c645d90b0bd3ff8f66d20d19b99a0da1631bf299e416476917194f1064f58b',
twoFactorBackupCodes: 'a-bunch-of-backup-codes',
},
});
};
export const unseedUser = async (userId: number) => {
await prisma.user.delete({
where: {