25 lines
1.2 KiB
JavaScript
25 lines
1.2 KiB
JavaScript
// tools/judge-gate-config.test.mjs
|
|
import { describe, it, expect } from 'vitest';
|
|
import { resolveJudgeEnabled, judgeActive } from './judge-gate-config.mjs';
|
|
|
|
describe('resolveJudgeEnabled (рубильник владельца)', () => {
|
|
it('флаг =1 → включён', () => {
|
|
expect(resolveJudgeEnabled({ env: { ROUTER_MENTOR_JUDGE_ENABLED: '1' } })).toBe(true);
|
|
});
|
|
it('нет флага → выключен ($0)', () => {
|
|
expect(resolveJudgeEnabled({ env: {} })).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('judgeActive (активен только при флаге И ключе — иначе $0/инертен)', () => {
|
|
it('флаг + ключ → активен', () => {
|
|
expect(judgeActive({ env: { ROUTER_MENTOR_JUDGE_ENABLED: '1' }, keychainGet: () => 'k' })).toBe(true);
|
|
});
|
|
it('флаг есть, ключа нет → НЕ активен (fail-closed, нечем подписать)', () => {
|
|
expect(judgeActive({ env: { ROUTER_MENTOR_JUDGE_ENABLED: '1' }, keychainGet: () => null })).toBe(false);
|
|
});
|
|
it('ключ есть, флага нет → НЕ активен ($0 до рубильника)', () => {
|
|
expect(judgeActive({ env: {}, keychainGet: () => 'k' })).toBe(false);
|
|
});
|
|
});
|