mcporter/tests/schema-cache.test.ts
2026-05-04 08:17:42 +01:00

42 lines
1.4 KiB
TypeScript

import os from 'node:os';
import path from 'node:path';
import { afterEach, describe, expect, it, vi } from 'vitest';
import type { ServerDefinition } from '../src/config.js';
import { resolveSchemaCacheDir } from '../src/schema-cache.js';
const mkDef = (name: string, tokenCacheDir?: string): ServerDefinition => ({
name,
command: { kind: 'http', url: new URL('https://example.com/mcp') },
tokenCacheDir,
});
describe('schema cache paths', () => {
const originalEnv = { ...process.env };
let homedirSpy: { mockRestore(): void } | undefined;
afterEach(() => {
process.env = { ...originalEnv };
homedirSpy?.mockRestore();
homedirSpy = undefined;
});
it('uses XDG_CACHE_HOME by default', () => {
process.env.XDG_CACHE_HOME = '/tmp/xdg-cache';
expect(resolveSchemaCacheDir(mkDef('server'))).toBe(path.join('/tmp/xdg-cache', 'mcporter', 'server'));
});
it('keeps tokenCacheDir as the explicit override', () => {
process.env.XDG_CACHE_HOME = '/tmp/xdg-cache';
expect(resolveSchemaCacheDir(mkDef('server', '/explicit/cache'))).toBe('/explicit/cache');
});
it('falls back to the legacy mcporter directory without XDG_CACHE_HOME', () => {
homedirSpy = vi.spyOn(os, 'homedir').mockReturnValue('/home/tester');
delete process.env.XDG_CACHE_HOME;
expect(resolveSchemaCacheDir(mkDef('server'))).toBe(path.join('/home/tester', '.mcporter', 'server'));
});
});