- Remove legacy TTS rate limit environment variables and migrate all related configuration to runtime settings managed via the Admin UI - Add runtime config keys for TTS rate limiting enable/disable and per-user/IP daily quotas - Refactor rate limiter and API routes to use runtime config for thresholds and enablement - Update AdminFeaturesPanel to allow editing TTS rate limiting and quota values in the UI - Add shared-provider-selection utility for consistent provider selection logic - Update documentation to reflect new runtime/admin configuration and remove obsolete env var docs - Add unit tests for rate limit runtime settings and provider selection BREAKING CHANGE: TTS rate limiting is now controlled via Admin → Site features; environment variables for TTS rate limiting are no longer supported and will be ignored.
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
import { resolvePreferredSharedProviderSlug } from '../../src/lib/shared/shared-provider-selection';
|
|
|
|
const PROVIDERS = [
|
|
{ slug: 'shared-a' },
|
|
{ slug: 'default-openai' },
|
|
{ slug: 'shared-b' },
|
|
] as const;
|
|
|
|
test.describe('resolvePreferredSharedProviderSlug', () => {
|
|
test('prefers requested shared slug when present', () => {
|
|
expect(resolvePreferredSharedProviderSlug({
|
|
providers: PROVIDERS,
|
|
requestedSlug: 'shared-b',
|
|
runtimeDefaultSlug: 'shared-a',
|
|
})).toBe('shared-b');
|
|
});
|
|
|
|
test('falls back to runtime default shared slug when requested is missing', () => {
|
|
expect(resolvePreferredSharedProviderSlug({
|
|
providers: PROVIDERS,
|
|
requestedSlug: 'missing-slug',
|
|
runtimeDefaultSlug: 'shared-a',
|
|
})).toBe('shared-a');
|
|
});
|
|
|
|
test('falls back to default-openai before first provider', () => {
|
|
expect(resolvePreferredSharedProviderSlug({
|
|
providers: PROVIDERS,
|
|
requestedSlug: null,
|
|
runtimeDefaultSlug: null,
|
|
})).toBe('default-openai');
|
|
});
|
|
|
|
test('ignores built-in provider ids for requested/runtime defaults', () => {
|
|
expect(resolvePreferredSharedProviderSlug({
|
|
providers: PROVIDERS,
|
|
requestedSlug: 'openai',
|
|
runtimeDefaultSlug: 'custom-openai',
|
|
})).toBe('default-openai');
|
|
});
|
|
|
|
test('falls back to first enabled provider when default-openai is missing', () => {
|
|
expect(resolvePreferredSharedProviderSlug({
|
|
providers: [{ slug: 'shared-z' }, { slug: 'shared-y' }],
|
|
requestedSlug: null,
|
|
runtimeDefaultSlug: null,
|
|
})).toBe('shared-z');
|
|
});
|
|
});
|