Adds 18 new tests covering the bugs fixed in the previous commit so they can't silently regress: - parseExpiry (7 tests): numeric ms-epoch input, numeric strings handled before Date.parse so "1700000000" doesn't get year-interpreted, RFC3339 strings, expires_in:0 honored as already-expired, 30-day fallback only when both inputs are missing/invalid - normalizeMessages (4 tests): system hoisting, multipart text flatten, multiple system joining, empty input - wrapQoderSSE (6 tests): the fixed cases — trailing partial line drained in flush(), no chunks forwarded after [DONE], embedded newlines stripped from inner body, error envelope produces error chunk + [DONE], non-ok responses returned unchanged - expose parseExpiry from auth.js, expose normalizeMessages/wrapQoderSSE via __test__ from the executor (internals only — not part of the public API). Marked with comment so the surface is intentional. 42 tests total (24 original + 18 new). Build still clean.
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 floatbuildEmbeddingsUrl: openai, openrouter, openai-compatible-*, unsupported providersbuildEmbeddingsHeaders: per-provider header sets, fallback to accessTokenhandleEmbeddingsCoreinput validation: missing, wrong type, null, emptyhandleEmbeddingsCoresuccess: response format, CORS, Content-Type, callbackshandleEmbeddingsCoreerrors: 400/429/500, network error, invalid JSONhandleEmbeddingsCoretoken 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