mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { mkdtemp, rm } from 'node:fs/promises';
|
|
import { randomBytes } from 'node:crypto';
|
|
import { tmpdir } from 'node:os';
|
|
import { join } from 'node:path';
|
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
import {
|
|
APP_KEYS,
|
|
SIDECAR_MODES,
|
|
SIDECAR_SOURCES,
|
|
} from '@open-design/sidecar-proto';
|
|
|
|
const stopRuntime = vi.fn(async () => undefined);
|
|
const startDaemonRuntime = vi.fn(async () => ({
|
|
stop: stopRuntime,
|
|
url: 'http://127.0.0.1:48123',
|
|
}));
|
|
|
|
vi.mock('../src/daemon-startup.js', () => ({
|
|
startDaemonRuntime,
|
|
}));
|
|
|
|
describe('daemon sidecar startup', () => {
|
|
beforeEach(async () => {
|
|
vi.clearAllMocks();
|
|
const { resetDesktopAuthForTests } = await import('../src/desktop-auth.js');
|
|
resetDesktopAuthForTests();
|
|
});
|
|
|
|
afterEach(async () => {
|
|
const { resetDesktopAuthForTests } = await import('../src/desktop-auth.js');
|
|
resetDesktopAuthForTests();
|
|
});
|
|
|
|
it('starts through the shared daemon startup path and reports live auth state', async () => {
|
|
const { setDesktopAuthSecret } = await import('../src/desktop-auth.js');
|
|
const { startDaemonSidecar } = await import('../src/sidecar/server.js');
|
|
const root = await mkdtemp(join(tmpdir(), 'od-daemon-sidecar-'));
|
|
const handle = await startDaemonSidecar({
|
|
app: APP_KEYS.DAEMON,
|
|
base: root,
|
|
ipc: join(root, 'daemon.sock'),
|
|
mode: SIDECAR_MODES.DEV,
|
|
namespace: 'test',
|
|
source: SIDECAR_SOURCES.TOOLS_DEV,
|
|
});
|
|
|
|
try {
|
|
expect(startDaemonRuntime).toHaveBeenCalledWith(
|
|
expect.objectContaining({ port: 0 }),
|
|
);
|
|
const initial = await handle.status();
|
|
expect(initial.state).toBe('running');
|
|
expect(initial.url).toBe('http://127.0.0.1:48123');
|
|
expect(initial.desktopAuthGateActive).toBe(false);
|
|
|
|
setDesktopAuthSecret(randomBytes(32));
|
|
const afterAuth = await handle.status();
|
|
expect(afterAuth.desktopAuthGateActive).toBe(true);
|
|
} finally {
|
|
await handle.stop();
|
|
await handle.waitUntilStopped();
|
|
await rm(root, { recursive: true, force: true });
|
|
}
|
|
|
|
expect(stopRuntime).toHaveBeenCalled();
|
|
});
|
|
});
|