import { expect, it } from "vitest"; import { resolveOpenProviderRuntimeGroupPolicy } from "../../../src/config/runtime-group-policy.js"; type ResolvedGroupPolicy = ReturnType; export type RuntimeGroupPolicyResolver = ( params: Parameters[0], ) => ReturnType; export function installChannelRuntimeGroupPolicyFallbackSuite(params: { configuredLabel: string; defaultGroupPolicyUnderTest: "allowlist" | "disabled" | "open"; missingConfigLabel: string; missingDefaultLabel: string; resolve: RuntimeGroupPolicyResolver; }) { it(params.missingConfigLabel, () => { const resolved = params.resolve({ providerConfigPresent: false, }); expect(resolved.groupPolicy).toBe("allowlist"); expect(resolved.providerMissingFallbackApplied).toBe(true); }); it(params.configuredLabel, () => { const resolved = params.resolve({ providerConfigPresent: true, }); expect(resolved.groupPolicy).toBe("open"); expect(resolved.providerMissingFallbackApplied).toBe(false); }); it(params.missingDefaultLabel, () => { const resolved = params.resolve({ providerConfigPresent: false, defaultGroupPolicy: params.defaultGroupPolicyUnderTest, }); expect(resolved.groupPolicy).toBe("allowlist"); expect(resolved.providerMissingFallbackApplied).toBe(true); }); } export function expectResolvedGroupPolicyCase( resolved: Pick, expected: Pick, ) { expect(resolved.groupPolicy).toBe(expected.groupPolicy); expect(resolved.providerMissingFallbackApplied).toBe(expected.providerMissingFallbackApplied); }