agent-ecosystem/test/features/workspace-trust/main/WorkspaceTrustFeatureFlags.test.ts
2026-05-13 17:56:00 +03:00

88 lines
2.9 KiB
TypeScript

import { describe, expect, it, vi } from 'vitest';
import { resolveWorkspaceTrustFeatureFlags } from '@features/workspace-trust/main';
describe('WorkspaceTrustFeatureFlags', () => {
it('keeps workspace trust on by default without claiming file-lock support', () => {
expect(resolveWorkspaceTrustFeatureFlags({} as NodeJS.ProcessEnv)).toEqual({
enabled: true,
claudePty: true,
codexArgs: true,
retry: false,
fileLock: false,
});
});
it('does not enable the reserved file lock flag through env yet', () => {
expect(
resolveWorkspaceTrustFeatureFlags({
AGENT_TEAMS_WORKSPACE_TRUST_FILE_LOCK: 'true',
} as NodeJS.ProcessEnv).fileLock
).toBe(false);
});
it('uses the plan-name preflight flag before the legacy feature flag', () => {
expect(
resolveWorkspaceTrustFeatureFlags({
AGENT_TEAMS_WORKSPACE_TRUST_PREFLIGHT: 'false',
AGENT_TEAMS_WORKSPACE_TRUST: 'true',
} as NodeJS.ProcessEnv)
).toMatchObject({
enabled: false,
claudePty: false,
codexArgs: false,
});
});
it('uses the plan-name Codex settings flag before the legacy args alias', () => {
expect(
resolveWorkspaceTrustFeatureFlags({
AGENT_TEAMS_WORKSPACE_TRUST_CODEX_SETTINGS: 'false',
AGENT_TEAMS_WORKSPACE_TRUST_CODEX_ARGS: 'true',
} as NodeJS.ProcessEnv).codexArgs
).toBe(false);
});
it('keeps malformed default-on flags enabled and malformed default-off retry disabled', () => {
expect(
resolveWorkspaceTrustFeatureFlags({
AGENT_TEAMS_WORKSPACE_TRUST_PREFLIGHT: 'wat',
AGENT_TEAMS_WORKSPACE_TRUST_CLAUDE_PTY: 'maybe',
AGENT_TEAMS_WORKSPACE_TRUST_CODEX_SETTINGS: '???',
AGENT_TEAMS_WORKSPACE_TRUST_RETRY: 'later',
} as NodeJS.ProcessEnv)
).toEqual({
enabled: true,
claudePty: true,
codexArgs: true,
retry: false,
fileLock: false,
});
expect(vi.mocked(console.warn).mock.calls.map((call) => call.join(' '))).toEqual(
expect.arrayContaining([
expect.stringContaining('AGENT_TEAMS_WORKSPACE_TRUST_PREFLIGHT'),
expect.stringContaining('AGENT_TEAMS_WORKSPACE_TRUST_CLAUDE_PTY'),
expect.stringContaining('AGENT_TEAMS_WORKSPACE_TRUST_CODEX_SETTINGS'),
expect.stringContaining('AGENT_TEAMS_WORKSPACE_TRUST_RETRY'),
])
);
vi.mocked(console.warn).mockClear();
});
it('keeps child capabilities off when the main preflight flag is disabled', () => {
expect(
resolveWorkspaceTrustFeatureFlags({
AGENT_TEAMS_WORKSPACE_TRUST_PREFLIGHT: 'off',
AGENT_TEAMS_WORKSPACE_TRUST_CLAUDE_PTY: 'on',
AGENT_TEAMS_WORKSPACE_TRUST_CODEX_SETTINGS: 'on',
AGENT_TEAMS_WORKSPACE_TRUST_RETRY: 'on',
} as NodeJS.ProcessEnv)
).toEqual({
enabled: false,
claudePty: false,
codexArgs: false,
retry: false,
fileLock: false,
});
});
});