const TEST_DB = 'ppaimt_crest_test'; export async function setup() { const dotenv = await import('dotenv'); dotenv.config({ path: new URL('../.env', import.meta.url), quiet: true }); process.env.NODE_ENV = 'test'; process.env.DB_NAME = TEST_DB; process.env.DATA_ENCRYPTION_KEY = 'BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc='; if (!/^[A-Za-z0-9_]+$/.test(TEST_DB)) { throw new Error('Invalid test database name'); } if (!process.env.DB_USER) { throw new Error('DB_USER is required in backend/.env before tests can migrate'); } const mysql = await import('mysql2/promise'); const connection = await mysql.createConnection({ host: process.env.DB_HOST || '127.0.0.1', port: Number(process.env.DB_PORT || 3306), user: process.env.DB_USER, password: process.env.DB_PASSWORD ?? '', }); await connection.query( `CREATE DATABASE IF NOT EXISTS \`${TEST_DB}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`, ); await connection.end(); const { default: knex } = await import('knex'); const configModule = await import('../knexfile.js'); const db = knex(configModule.default); await db.migrate.latest(); await db.destroy(); }