47 lines
1.6 KiB
TypeScript
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);
|
|
});
|
|
});
|