import { describe, it, expect, beforeAll } from 'vitest'; import request from 'supertest'; import { createApp } from '../../server.js'; import { resetDb } from '../helpers/db.js'; import { migrateUp } from '../../lib/db/migrate.js'; let app; const owner = { Authorization: 'Bearer test-token' }; beforeAll(async () => { await resetDb(); await migrateUp(); process.env.OWNER_TOKEN = 'test-token'; app = createApp(); }); describe('dross settings', () => { it('GET /api/dross/settings returns defaults', async () => { const res = await request(app).get('/api/dross/settings').set(owner); expect(res.status).toBe(200); expect(res.body).toMatchObject({ avatar: 'soft-eye', accent: '#a86adf', persona: '', voiceMode: 'review' }); }); it('PUT /api/dross/settings persists and round-trips', async () => { const body = { avatar: 'wisp', accent: '#aa66ff', persona: 'Be terse.', voiceMode: 'handsfree' }; const put = await request(app).put('/api/dross/settings').set(owner).send(body); expect(put.status).toBe(200); const get = await request(app).get('/api/dross/settings').set(owner); expect(get.body).toMatchObject(body); }); it('PUT rejects a bad avatar (400)', async () => { const res = await request(app).put('/api/dross/settings').set(owner) .send({ avatar: 'nope', accent: '#aa66ff', persona: '', voiceMode: 'review' }); expect(res.status).toBe(400); }); });