import * as dotenv from 'dotenv'; import { it } from 'node:test'; import { deleteUser, registerUser } from '#db/index.js'; import * as assert from 'node:assert'; import { initDb } from '#db/db.js'; import { disconnect } from 'mongoose'; import { AuthDto, RegisterDto } from '#dto/auth/index.js'; dotenv.config(); await initDb(); async function createTestUser() { const authData = await AuthDto.create({ username: (Math.random() * 1000000).toString(), password: (Math.random() * 1000000).toString(), email: (Math.random() * 1000000).toString() + '@example.com' }); return { authData, user: await registerUser(await RegisterDto.create(authData)) }; } await it('Can create user', async () => { await assert.doesNotReject(createTestUser()); }); await it('Can delete user', async () => { const { authData } = await createTestUser(); const deletePromise = deleteUser(authData); await assert.doesNotReject(deletePromise); }); await it('Cant delete nonexistant user', async () => { await assert.rejects(deleteUser('abc', '')); }); await it('Cant delete user with invalid password', async () => { const user = await createTestUser(); await assert.rejects(deleteUser(user.user._id, 'wrongpassword')); }); await disconnect();