Files
9router/tests
decolua eb712ca821 # v0.5.69 (2026-09-05)
## Features
- **Codex**: add GPT 6.0 Astra (`gpt-6-astra`) with vision, thinking and search capabilities
- **Usage**: add Claude Fable quota tracker support with weekly window normalization (`weekly fable (7d)`)
- **Dashboard**: group Antigravity Gemini and Claude quotas in Quota Tracker, prune stale hidden keys
- **OpenCode Go**: add `muse-spark-1.3-contributor` model and support parallel tool calls on Responses path (#3819)
- **Providers & Models**: align CodeBuddy-CN catalog/capabilities with server config; add GPT-5.6 Sol, Terra, Luna image aliases on Codex (#3806); refresh Qoder catalog with capability mapping and image pass-through
- **CLI tools**: replace Copilot MITM with VS Code extension setup guide
- **Gemini**: persist and replay `thoughtSignature` scoped by session namespace

## Fixes
- **Claude**: normalize adaptive auto effort (`output_config.effort`) (#3792)
- **Antigravity**: prevent Google anti-abuse rate limits during multi-account refresh (#3813)
- **Anthropic-compatible**: forward Claude beta flags to nodes fronting Anthropic (#3797)
- **Dashboard**: dynamic mode label for local/remote detection (#3801)
- **Codex**: format reset credit API errors cleanly (#3778)
- **Security**: guard cowork MCP tools probe against SSRF (#3783)
- **OpenCode Go**: track OpenCode Go quota (#3791) and send stable session headers (#3800)
- **Logger**: suppress noisy background token refresh logs
- **CLI**: export packed `.tgz` directly into workspace root instead of parent directory
2026-09-05 22:57:00 +07:00
..
2026-09-05 22:57:00 +07:00

9Router Embeddings Tests

Unit tests for the /v1/embeddings endpoint implementation.

Setup

Install test dependencies from the tests/ directory:

cd tests/ && npm install

Running Tests

From the tests/ directory:

npm test

Or run vitest directly with npx:

npx vitest run --reporter=verbose --config ./vitest.config.js

Test Files

File What it tests
unit/embeddingsCore.test.js open-sse/handlers/embeddingsCore.js — core logic: body builder, URL router, headers, handler flow
unit/embeddings.cloud.test.js cloud/src/handlers/embeddings.js — cloud worker handler: auth, validation, rate limits, CORS

Coverage Summary (59 tests)

embeddingsCore.test.js (36 tests)

  • buildEmbeddingsBody: single string, array, encoding_format, default float
  • buildEmbeddingsUrl: openai, openrouter, openai-compatible-*, unsupported providers
  • buildEmbeddingsHeaders: per-provider header sets, fallback to accessToken
  • handleEmbeddingsCore input validation: missing, wrong type, null, empty
  • handleEmbeddingsCore success: response format, CORS, Content-Type, callbacks
  • handleEmbeddingsCore errors: 400/429/500, network error, invalid JSON
  • handleEmbeddingsCore token refresh: 401 retry, graceful fallback

embeddings.cloud.test.js (23 tests)

  • CORS OPTIONS: 200 response, empty body, correct headers
  • Authentication: missing key, bad format, old-format key, wrong key value, valid key
  • Body validation: invalid JSON, missing model, missing input, bad model
  • Happy path: single string, array, correct delegation, CORS header, machineId override
  • Rate limiting: all accounts rate-limited → 503 + Retry-After, no credentials → 400
  • Error propagation: non-fallback errors passed through, 429 exhausts accounts
  • machineId override: validates key, rejects wrong key