Files
core2026/app/game-api/test/config.test.ts
T

47 lines
1.6 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { resolveGameApiConfigFromEnv } from '../src/config.js';
describe('resolveGameApiConfigFromEnv', () => {
it('keeps the deployment profile identity separate from the scenario id', () => {
const config = resolveGameApiConfigFromEnv({
PROFILE: 'hwe',
SCENARIO: '1010',
GAME_PROFILE_NAME: 'hwe:2',
GAME_TOKEN_SECRET: 'test-secret',
});
expect(config.profile).toBe('hwe');
expect(config.scenario).toBe('1010');
expect(config.profileName).toBe('hwe:2');
});
it('falls back to the legacy profile and scenario pair', () => {
const config = resolveGameApiConfigFromEnv({
PROFILE: 'hwe',
SCENARIO: '2',
GAME_TOKEN_SECRET: 'test-secret',
});
expect(config.profileName).toBe('hwe:2');
});
it.each(['0', '-1', '1.5', '999', 'Infinity'])('rejects unsafe account icon reconcile interval %s', (value) => {
expect(() =>
resolveGameApiConfigFromEnv({
GAME_TOKEN_SECRET: 'test-secret',
ACCOUNT_ICON_RESET_RECONCILE_INTERVAL_MS: value,
})
).toThrow('ACCOUNT_ICON_RESET_RECONCILE_INTERVAL_MS');
});
it('accepts a bounded integer account icon reconcile interval', () => {
expect(
resolveGameApiConfigFromEnv({
GAME_TOKEN_SECRET: 'test-secret',
ACCOUNT_ICON_RESET_RECONCILE_INTERVAL_MS: '1000',
}).accountIconResetReconcileIntervalMs
).toBe(1000);
});
});