Files
OmniRoute/tests/homolog/api/core.http
Diego Rodrigues de Sa e Souza c97d2a6ae2 feat(homolog): real-environment E2E homologation suite (npm run homolog) (#7133)
* feat(homolog): scaffolding da suíte de homologação E2E (deps + npm run homolog)

* feat(homolog): L0 avaliador de paridade de deploy (TDD)

* feat(homolog): L1a ciclo de vida de API key efêmera (login admin -> create -> revoke)

* feat(homolog): L1b suite httpYac de API (models, chat, auth de management, health)

* feat(homolog): L1c checker SSE de streaming real (TDD no parser)

* feat(homolog): L2 smoke de providers reais via promptfoo gerado do catálogo

* feat(homolog): L4a Playwright homolog config + login storageState

* feat(homolog): L4b smoke de todas as rotas do dashboard (descoberta via fs)

* feat(homolog): L4c fluxo criar/revogar API key pela UI

* fix(homolog): resiliencia real-environment — stream:false no smoke promptfoo, retry de socket keep-alive, key efemera com sufixo unico

* feat(homolog): L5 orquestrador npm run homolog + relatorio CTRF unificado

* docs(homolog): guia de operacao da suite + fragment de changelog + allowlist env-doc-sync

* fix(homolog): paraleliza o sweep de rotas do dashboard (fullyParallel + 8 workers)

* fix(homolog): isola outputs crus em homolog-report/raw para nao quebrar o ctrf merge

* fix(homolog): outputDir absoluto do reporter CTRF da UI (path relativo escapava do worktree)

* chore(quality): allowlist the 5 homolog-suite devDependencies (ctrf-io trio, httpyac, promptfoo) after registry verification

* chore(quality): register the homolog Playwright suite as a test-discovery collector (run.mjs -> tests/homolog/ui)
2026-07-14 16:24:11 -03:00

42 lines
1.1 KiB
HTTP

### GET /v1/models autenticado retorna catálogo
GET {{baseUrl}}/v1/models
Authorization: Bearer {{apiKey}}
?? status == 200
?? js response.parsedBody.data.length > 0
### chat completions non-stream com modelo do tier crítico
POST {{baseUrl}}/v1/chat/completions
Authorization: Bearer {{apiKey}}
Content-Type: application/json
{
"model": "{{smokeModel}}",
"messages": [{ "role": "user", "content": "Reply with exactly: OK" }],
"max_tokens": 5,
"stream": false
}
?? status == 200
?? js response.parsedBody.choices[0].message.content.length > 0
### management sem credencial é rejeitado (401)
# /v1/models pode ser público (REQUIRE_API_KEY off na VPS), então o teste de auth
# usa a superfície de management, que exige credencial sempre.
GET {{baseUrl}}/api/keys
?? status == 401
### management com bearer inválido é rejeitado (403)
GET {{baseUrl}}/api/keys
Authorization: Bearer or-invalid-key-homolog
?? status == 403
### health é público e saudável
# httpYac trata o lado direito de `==` como literal sem aspas.
GET {{baseUrl}}/api/monitoring/health
?? status == 200
?? js response.parsedBody.status == healthy