mission-control/tests/local-agent-sync.spec.ts

46 lines
1.6 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { API_KEY_HEADER } from './helpers'
test.describe('Local Agent Sync', () => {
// ── POST /api/agents/sync?source=local ────────
test('POST local sync returns a result', async ({ request }) => {
const res = await request.post('/api/agents/sync?source=local', {
headers: API_KEY_HEADER,
})
expect(res.status()).toBe(200)
const body = await res.json()
expect(body).toHaveProperty('ok')
expect(body).toHaveProperty('message')
expect(typeof body.message).toBe('string')
})
test('POST gateway sync still works', async ({ request }) => {
const res = await request.post('/api/agents/sync', {
headers: API_KEY_HEADER,
})
// May return 200 (config found) or 500 (no config) — either is fine
expect([200, 500]).toContain(res.status())
})
// ── GET /api/agents (source field) ────────────
test('agents list includes source field after sync', async ({ request }) => {
// Trigger local sync first
await request.post('/api/agents/sync?source=local', {
headers: API_KEY_HEADER,
})
const res = await request.get('/api/agents', { headers: API_KEY_HEADER })
expect(res.status()).toBe(200)
const body = await res.json()
const agents = body.agents || []
// All agents should have a source (default 'manual' from migration 034)
for (const agent of agents) {
// source may be null for pre-migration agents, or 'manual'/'local'/'gateway'
expect(typeof agent.source === 'string' || agent.source === null).toBe(true)
}
})
})