9router/tests
Brokenc0de ab5ec52f28 feat(providers): add Venice AI provider
OpenAI-compatible apikey provider (chat/embedding/image) with dynamic
model discovery via modelsFetcher + passthroughModels. No executor needed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-26 11:37:44 +07:00
..
__baseline__ feat(codebuddy-cn): add short model prefix alias "cbcn" 2026-06-21 16:02:38 +07:00
translator fix provider thinking compatibility 2026-06-26 10:12:48 +07:00
unit feat(providers): add Venice AI provider 2026-06-26 11:37:44 +07:00
.gitignore feat: add /v1/embeddings endpoint (OpenAI-compatible) (#146) 2026-02-18 13:24:02 +07:00
package.json feat: add /v1/embeddings endpoint (OpenAI-compatible) (#146) 2026-02-18 13:24:02 +07:00
README.md feat: add /v1/embeddings endpoint (OpenAI-compatible) (#146) 2026-02-18 13:24:02 +07:00
vitest.config.js feat(kiro): headless API-key auth + direct Claude/Kiro route 2026-06-17 10:01:30 +07:00

9Router Embeddings Tests

Unit tests for the /v1/embeddings endpoint implementation.

Setup

Vitest must be installed globally or in /tmp/node_modules (due to npm workspace hoisting from the root Next.js project):

cd /tmp && npm install vitest

Running Tests

cd tests/
NODE_PATH=/tmp/node_modules /tmp/node_modules/.bin/vitest run --reporter=verbose --config ./vitest.config.js

Or using the package script (from the tests/ directory):

npm test

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