import { vi, beforeEach, afterEach } from 'vitest'; import os from 'os'; import path from 'path'; import fs from 'fs'; // Give each test worker a unique temp DATA_DIR so tokenStore file I/O is // fully isolated and doesn't conflict with a running dev server's data/. const tmpDir = path.join(os.tmpdir(), `sofarr-test-${process.pid}`); if (!fs.existsSync(tmpDir)) fs.mkdirSync(tmpDir, { recursive: true }); process.env.DATA_DIR = tmpDir; // Disable rate limiters in tests — all supertest requests share 127.0.0.1 // and would quickly exhaust per-IP windows otherwise. process.env.SKIP_RATE_LIMIT = '1'; // Suppress console noise during tests (errors still surface via thrown exceptions) beforeEach(() => { vi.spyOn(console, 'log').mockImplementation(() => {}); vi.spyOn(console, 'warn').mockImplementation(() => {}); vi.spyOn(console, 'error').mockImplementation(() => {}); }); afterEach(() => { // clearAllMocks resets call history and queued return values without // restoring mock implementations — use restoreAllMocks only for spies. vi.clearAllMocks(); });