Files
9router/tests
Nim 1a3db1efae feat(antigravity): quota-aware routing with reset-aware fallback
On a 409/429 from Antigravity, fetch live quota to learn the exact
per-model resetAt instead of guessing a backoff, then skip only the
exhausted account/model pair until that time.

- antigravityQuota.js: in-memory quota cache, coalesced concurrent
  refreshes, 30s throttle per connection (applied to failures too),
  keeps known cache when upstream returns 401/403 error payloads
- auth.js: pre-filter exhausted account/model pairs; report the
  earliest quota reset when every account is blocked; skip the
  30-minute cooldown cap so the upstream resetAt is not truncated
- chat.js: antigravity 409/429 falls back on the RAM cache only, no
  persistent modelLock_* for this path
- Logs identify accounts by id prefix, never email or name

Closes #3561
2026-08-27 16:18:08 +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