Files
llmapikey/tests/provisioning-client.test.js
T
tiennm99 02fa52ccf9 feat: scaffold OpenRouter key giveaway site (gated, code-only)
- Next.js 15 App Router (JS+JSDoc): landing, auth-gated dashboard, docs
- GitHub OAuth via Supabase; identity anchored on numeric provider_id
- key provisioning: reserve-then-mint-persist-compensate, one key per account
- api_keys in unexposed llmapikey schema via direct Postgres; RLS deny-all
- live minting gated behind PROVISIONING_ENABLED; Vercel auto-deploy disabled
- unit tests (mask, request-body), RLS deny-all test, reconcile script
2026-06-13 14:18:52 +07:00

37 lines
984 B
JavaScript

import assert from "node:assert/strict";
import { test } from "node:test";
import { buildCreateKeyBody } from "../lib/openrouter/create-key-request-body.js";
test("create-key body uses OpenRouter snake_case fields", () => {
const body = buildCreateKeyBody({
name: "llmapikey:12345",
limitUsd: 10,
resetPeriod: "daily",
includeByok: true,
expiresAt: "2026-09-11T00:00:00.000Z",
});
assert.deepEqual(body, {
name: "llmapikey:12345",
limit: 10,
limit_reset: "daily",
include_byok_in_limit: true,
expires_at: "2026-09-11T00:00:00.000Z",
});
});
test("create-key body has no camelCase leakage", () => {
const body = buildCreateKeyBody({
name: "x",
limitUsd: 5,
resetPeriod: "daily",
includeByok: false,
expiresAt: "2026-01-01T00:00:00.000Z",
});
const keys = Object.keys(body);
assert.ok(!keys.includes("limitReset"));
assert.ok(!keys.includes("includeByok"));
assert.ok(!keys.includes("expiresAt"));
});