open-design/apps/daemon/tests/server-paths.test.ts
Zakaria a46764fb1b
Some checks failed
ci / Validate workspace (push) Has been cancelled
landing-page-ci / Validate landing page (push) Has been cancelled
landing-page-deploy / Deploy landing page (push) Has been cancelled
github-metrics / Generate repository metrics SVG (push) Has been cancelled
first-commit
2026-05-04 14:58:14 -04:00

54 lines
2.1 KiB
TypeScript

import path from 'node:path';
import { describe, expect, it } from 'vitest';
import { resolveDaemonResourceRoot, resolveProjectRoot } from '../src/server.js';
describe('resolveProjectRoot', () => {
it('resolves the repository root from the source daemon directory', () => {
const root = path.resolve(import.meta.dirname, '../../..');
expect(resolveProjectRoot(path.join(root, 'apps', 'daemon'))).toBe(root);
});
it('resolves the repository root from the live TypeScript source directory', () => {
const root = path.resolve(import.meta.dirname, '../../..');
expect(resolveProjectRoot(path.join(root, 'apps', 'daemon', 'src'))).toBe(root);
});
it('resolves the repository root from the compiled daemon dist directory', () => {
const root = path.resolve(import.meta.dirname, '../../..');
expect(resolveProjectRoot(path.join(root, 'apps', 'daemon', 'dist'))).toBe(root);
});
it('resolves the repository root from the daemon src directory (tsx entry)', () => {
const root = path.resolve(import.meta.dirname, '../../..');
expect(resolveProjectRoot(path.join(root, 'apps', 'daemon', 'src'))).toBe(root);
});
});
describe('resolveDaemonResourceRoot', () => {
it('allows resource roots under an explicit safe base', () => {
const safeBase = path.resolve(import.meta.dirname, '..', 'fixtures', 'resources');
const configured = path.join(safeBase, 'packaged');
expect(resolveDaemonResourceRoot({ configured, safeBases: [safeBase] })).toBe(configured);
});
it('allows a resource root equal to an explicit safe base', () => {
const safeBase = path.resolve(import.meta.dirname, '..', 'fixtures', 'resources');
expect(resolveDaemonResourceRoot({ configured: safeBase, safeBases: [safeBase] })).toBe(safeBase);
});
it('rejects resource roots outside the safe bases', () => {
const safeBase = path.resolve(import.meta.dirname, '..', 'fixtures', 'resources');
const configured = path.resolve(import.meta.dirname, '..', 'fixtures-other', 'resources');
expect(() => resolveDaemonResourceRoot({ configured, safeBases: [safeBase] })).toThrow(
/OD_RESOURCE_ROOT must be under/,
);
});
});