import { INestApplication } from '@nestjs/common'; import { eq } from 'drizzle-orm'; import request from 'supertest'; import { users } from '../../src/database/schema'; import type { DrizzleDB } from '../../src/database/database.module'; export async function registerAndActivate( app: INestApplication, db: DrizzleDB, username: string, password: string, ): Promise<{ accessToken: string; refreshToken: string; userId: string }> { const register = await request(app.getHttpServer()) .post('/auth/register') .send({ username, password }); if (register.status !== 201) { throw new Error( `register failed ${register.status} ${JSON.stringify(register.body)}`, ); } const userId = (register.body as { id: string }).id; await db .update(users) .set({ status: 'active' }) .where(eq(users.id, userId)); const login = await request(app.getHttpServer()) .post('/auth/login') .send({ username, password }); if (login.status !== 200) { throw new Error( `login failed ${login.status} ${JSON.stringify(login.body)}`, ); } const tokens = login.body as { accessToken: string; refreshToken: string }; return { userId, accessToken: tokens.accessToken, refreshToken: tokens.refreshToken, }; }