mission-control/tests/diagnostics-api.spec.ts

76 lines
3.2 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { API_KEY_HEADER } from './helpers'
test.describe('Diagnostics API', () => {
// ── Auth ─────────────────────────────────────
test('GET /api/diagnostics returns 401 without auth', async ({ request }) => {
const res = await request.get('/api/diagnostics')
expect(res.status()).toBe(401)
})
// ── Response shape ───────────────────────────
test('GET returns diagnostics with all expected sections', async ({ request }) => {
const res = await request.get('/api/diagnostics', { headers: API_KEY_HEADER })
expect(res.status()).toBe(200)
const body = await res.json()
expect(body).toHaveProperty('version')
expect(body).toHaveProperty('security')
expect(body).toHaveProperty('database')
expect(body).toHaveProperty('agents')
expect(body).toHaveProperty('sessions')
expect(body).toHaveProperty('gateway')
expect(body).toHaveProperty('system')
})
test('version contains app version string', async ({ request }) => {
const res = await request.get('/api/diagnostics', { headers: API_KEY_HEADER })
const body = await res.json()
expect(body.version).toHaveProperty('app')
expect(typeof body.version.app).toBe('string')
})
test('security contains score as number', async ({ request }) => {
const res = await request.get('/api/diagnostics', { headers: API_KEY_HEADER })
const body = await res.json()
expect(typeof body.security.score).toBe('number')
expect(body.security).toHaveProperty('checks')
expect(Array.isArray(body.security.checks)).toBe(true)
})
test('database contains sizeBytes and migrationVersion', async ({ request }) => {
const res = await request.get('/api/diagnostics', { headers: API_KEY_HEADER })
const body = await res.json()
expect(body.database).toHaveProperty('sizeBytes')
expect(typeof body.database.sizeBytes).toBe('number')
expect(body.database).toHaveProperty('migrationVersion')
})
test('system contains nodeVersion and platform', async ({ request }) => {
const res = await request.get('/api/diagnostics', { headers: API_KEY_HEADER })
const body = await res.json()
expect(body.system).toHaveProperty('nodeVersion')
expect(body.system).toHaveProperty('platform')
expect(body.system).toHaveProperty('arch')
expect(typeof body.system.nodeVersion).toBe('string')
})
test('gateway reports configured and reachable status', async ({ request }) => {
const res = await request.get('/api/diagnostics', { headers: API_KEY_HEADER })
const body = await res.json()
expect(body.gateway).toHaveProperty('configured')
expect(body.gateway).toHaveProperty('reachable')
expect(typeof body.gateway.configured).toBe('boolean')
expect(typeof body.gateway.reachable).toBe('boolean')
})
test('agents reports total and byStatus', async ({ request }) => {
const res = await request.get('/api/diagnostics', { headers: API_KEY_HEADER })
const body = await res.json()
expect(body.agents).toHaveProperty('total')
expect(body.agents).toHaveProperty('byStatus')
expect(typeof body.agents.total).toBe('number')
})
})