krona-staff/tests/unit/config.test.ts
Ochenstarik 513cdff702 style: establish repository formatting baseline
Run the configured formatter across the repository before audit remediation so later security fixes produce reviewable, conflict-resistant diffs.
2026-09-26 15:36:20 +07:00

48 lines
1.8 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { loadConfig } from '../../src/config.js';
const base = {
DATABASE_URL: 'postgres://localhost/staff',
STANDALONE_TENANT_ID: '01J00000000000000000000000',
STANDALONE_ACTOR_ID: '01J00000000000000000000001',
};
describe('runtime modes', () => {
it('allows the compatible standalone adapter', () =>
expect(loadConfig(base).STAFF_RUNTIME_MODE).toBe('standalone'));
it('fails closed when platform contracts are missing', () =>
expect(() => loadConfig({ ...base, STAFF_RUNTIME_MODE: 'platform' })).toThrow(
/PLATFORM_GATEWAY_URL/,
));
it('rejects standalone mode in production', () =>
expect(() => loadConfig({ ...base, NODE_ENV: 'production' })).toThrow(
/standalone is not allowed/,
));
it('treats empty optional platform variables as absent in compose', () =>
expect(
loadConfig({
...base,
PLATFORM_GATEWAY_URL: '',
PLATFORM_JWT_ISSUER: '',
PLATFORM_JWT_AUDIENCE: '',
PLATFORM_JWKS_URL: '',
}).PLATFORM_GATEWAY_URL,
).toBeUndefined());
it('requires VAPID keys to be configured together if provided', () => {
expect(() => loadConfig({ ...base, VAPID_PUBLIC_KEY: 'pubkey' })).toThrow(
/VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY must be configured together/,
);
expect(() => loadConfig({ ...base, VAPID_PRIVATE_KEY: 'privkey' })).toThrow(
/VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY must be configured together/,
);
const config = loadConfig({
...base,
VAPID_PUBLIC_KEY: 'pubkey',
VAPID_PRIVATE_KEY: 'privkey',
VAPID_SUBJECT: 'mailto:ops@krona.local',
});
expect(config.VAPID_PUBLIC_KEY).toBe('pubkey');
expect(config.VAPID_PRIVATE_KEY).toBe('privkey');
expect(config.VAPID_SUBJECT).toBe('mailto:ops@krona.local');
});
});