mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-14 19:02:17 +03:00
Remove a reserva estática global e passa a gatear o roteamento pela ocupação real do lease exclusivo ativo, com boa cobertura de testes (5 arquivos, 54 casos, todos verdes no worktree combinado). Typecheck limpo. Dois ajustes feitos por cima antes do merge: 1. **26 arquivos `.pyc` órfãos removidos** (`scripts/ops/__pycache__/…`, `tests/unit/ops/__pycache__/…`) — cache compilado do Python sem relação com o fix de lease, provavelmente commitado sem querer do ambiente local. 2. **Conflito em `src/app/api/keys/[id]/route.ts`**: mantida a checagem mais ampla desta PR (`instanceof ApiKeyPolicyInvariantError || código LEASE_KEY_POLICY_INVALID`), que é um superset da versão anterior — cobre o caso original e o novo caminho de erro do lease. Obrigado pela contribuição!
95 lines
3.0 KiB
TypeScript
95 lines
3.0 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import {
|
|
buildApiKeyCreateScopes,
|
|
mergeApiKeyPermissionScopes,
|
|
} from "../../src/app/(dashboard)/dashboard/api-manager/apiManagerScopes.ts";
|
|
import {
|
|
SELF_ACCOUNT_QUOTA_SCOPE,
|
|
SELF_USAGE_SCOPE,
|
|
} from "../../src/shared/constants/selfServiceScopes.ts";
|
|
import { API_KEY_BYPASS_PROVIDER_QUOTA_SCOPE } from "../../src/shared/constants/apiKeyPolicyScopes.ts";
|
|
|
|
test("create scopes enable own usage by default without shared account quota", () => {
|
|
assert.deepEqual(buildApiKeyCreateScopes({ manageEnabled: false }), [SELF_USAGE_SCOPE]);
|
|
assert.deepEqual(buildApiKeyCreateScopes({ manageEnabled: true }), ["manage", SELF_USAGE_SCOPE]);
|
|
assert.deepEqual(
|
|
buildApiKeyCreateScopes({
|
|
manageEnabled: false,
|
|
bypassProviderQuotaPolicyEnabled: true,
|
|
}),
|
|
[SELF_USAGE_SCOPE, API_KEY_BYPASS_PROVIDER_QUOTA_SCOPE]
|
|
);
|
|
assert.deepEqual(
|
|
buildApiKeyCreateScopes({
|
|
manageEnabled: false,
|
|
selfUsageEnabled: false,
|
|
selfAccountQuotaEnabled: true,
|
|
}),
|
|
[]
|
|
);
|
|
});
|
|
|
|
test("permission scope merge preserves unrelated scopes while toggling managed scopes", () => {
|
|
const scopes = mergeApiKeyPermissionScopes(["custom:scope", SELF_USAGE_SCOPE], {
|
|
manageEnabled: true,
|
|
selfUsageEnabled: true,
|
|
selfAccountQuotaEnabled: true,
|
|
bypassProviderQuotaPolicyEnabled: true,
|
|
});
|
|
|
|
assert.deepEqual(scopes, [
|
|
"custom:scope",
|
|
SELF_USAGE_SCOPE,
|
|
"manage",
|
|
SELF_ACCOUNT_QUOTA_SCOPE,
|
|
API_KEY_BYPASS_PROVIDER_QUOTA_SCOPE,
|
|
]);
|
|
});
|
|
|
|
test("permission scope merge removes shared quota visibility when own usage is disabled", () => {
|
|
const scopes = mergeApiKeyPermissionScopes(
|
|
["custom:scope", SELF_USAGE_SCOPE, SELF_ACCOUNT_QUOTA_SCOPE],
|
|
{
|
|
manageEnabled: false,
|
|
selfUsageEnabled: false,
|
|
selfAccountQuotaEnabled: true,
|
|
bypassProviderQuotaPolicyEnabled: false,
|
|
}
|
|
);
|
|
|
|
assert.deepEqual(scopes, ["custom:scope"]);
|
|
});
|
|
|
|
test("permission scope merge toggles provider quota policy bypass without dropping custom scopes", () => {
|
|
const enabled = mergeApiKeyPermissionScopes(["custom:scope"], {
|
|
manageEnabled: false,
|
|
selfUsageEnabled: false,
|
|
selfAccountQuotaEnabled: false,
|
|
bypassProviderQuotaPolicyEnabled: true,
|
|
});
|
|
|
|
assert.deepEqual(enabled, ["custom:scope", API_KEY_BYPASS_PROVIDER_QUOTA_SCOPE]);
|
|
|
|
const disabled = mergeApiKeyPermissionScopes(enabled, {
|
|
manageEnabled: false,
|
|
selfUsageEnabled: false,
|
|
selfAccountQuotaEnabled: false,
|
|
bypassProviderQuotaPolicyEnabled: false,
|
|
});
|
|
|
|
assert.deepEqual(disabled, ["custom:scope"]);
|
|
});
|
|
|
|
test("permission scope merge retains lease:exclusive scope through permission updates", () => {
|
|
const scopes = mergeApiKeyPermissionScopes(["lease:exclusive", SELF_USAGE_SCOPE], {
|
|
manageEnabled: true,
|
|
selfUsageEnabled: true,
|
|
selfAccountQuotaEnabled: false,
|
|
bypassProviderQuotaPolicyEnabled: false,
|
|
});
|
|
|
|
assert.deepEqual(scopes, ["lease:exclusive", SELF_USAGE_SCOPE, "manage"]);
|
|
});
|