import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { isWorkbenchEntryEnabled } from '@/lib/workbench/entry-gate'; const FLAGS = [ 'NEXT_PUBLIC_PRO_WORKBENCH_ENABLED', 'OPENMAIC_AGENT_RUNTIME_ENABLED', 'DATABASE_URL', ] as const; describe('workbench entry gate', () => { const originals = new Map(); beforeEach(() => { for (const name of FLAGS) { originals.set(name, process.env[name]); delete process.env[name]; } }); afterEach(() => { for (const name of FLAGS) { const original = originals.get(name); if (original === undefined) delete process.env[name]; else process.env[name] = original; } originals.clear(); }); it.each([ ['all flags are absent', undefined, undefined, undefined], ['the public entry flag is off', undefined, 'true', 'postgres://runtime'], ['the runtime is off', 'true', undefined, 'postgres://runtime'], ['the database URL is absent', 'true', 'true', undefined], ['the database URL is blank', 'true', 'true', ' '], ])('keeps both entry routes closed when %s', (_case, publicFlag, runtimeFlag, databaseUrl) => { if (publicFlag !== undefined) process.env.NEXT_PUBLIC_PRO_WORKBENCH_ENABLED = publicFlag; if (runtimeFlag !== undefined) process.env.OPENMAIC_AGENT_RUNTIME_ENABLED = runtimeFlag; if (databaseUrl !== undefined) process.env.DATABASE_URL = databaseUrl; expect(isWorkbenchEntryEnabled()).toBe(false); }); it('opens both entry routes only for an enabled, configured runtime', () => { process.env.NEXT_PUBLIC_PRO_WORKBENCH_ENABLED = 'true'; process.env.OPENMAIC_AGENT_RUNTIME_ENABLED = 'true'; process.env.DATABASE_URL = 'postgres://runtime'; expect(isWorkbenchEntryEnabled()).toBe(true); }); });