kimi-code / packages /kap-server /test /debugNonloopback.e2e.test.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
4e23b01 verified
Raw
History Blame Contribute Delete
2.66 kB
import { mkdtemp, rm } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import { type RunningServer, startServer } from '../src/start';
import { TEST_HOST_IDENTITY } from './helpers/hostIdentity';
let prevPassword: string | undefined;
const createdDirs: string[] = [];
const running: RunningServer[] = [];
beforeEach(() => {
prevPassword = process.env['KIMI_CODE_PASSWORD'];
});
afterEach(async () => {
for (const r of running.splice(0)) {
try {
await r.close();
} catch {
}
}
for (const dir of createdDirs.splice(0)) {
await rm(dir, { recursive: true, force: true });
}
if (prevPassword === undefined) {
delete process.env['KIMI_CODE_PASSWORD'];
} else {
process.env['KIMI_CODE_PASSWORD'] = prevPassword;
}
});
async function tmpHome(): Promise<string> {
const dir = await mkdtemp(join(tmpdir(), 'kimi-v2-debug-loopback-'));
createdDirs.push(dir);
return dir;
}
async function probeDebug(server: RunningServer): Promise<number> {
const token = server.authTokenService.getToken();
const res = await fetch(`http://127.0.0.1:${server.port}/api/v1/debug/channels`, {
headers: { authorization: `Bearer ${token}` },
});
return res.status;
}
describe('debug endpoints are not exposed on a non-loopback bind', () => {
it('returns 404 for /api/v1/debug/* on a 0.0.0.0 bind even when requested', async () => {
process.env['KIMI_CODE_PASSWORD'] = 'test-pw';
const home = await tmpHome();
const server = await startServer({
hostIdentity: TEST_HOST_IDENTITY,
host: '0.0.0.0',
port: 0,
homeDir: home,
logLevel: 'silent',
insecureNoTls: true,
debugEndpoints: true,
});
running.push(server);
expect(await probeDebug(server)).toBe(404);
});
it('is not mounted on loopback by default (without the option)', async () => {
const home = await tmpHome();
const server = await startServer({
hostIdentity: TEST_HOST_IDENTITY,
host: '127.0.0.1',
port: 0,
homeDir: home,
logLevel: 'silent',
});
running.push(server);
expect(await probeDebug(server)).toBe(404);
});
it('mounts the whitelist-free RPC surface on loopback when requested', async () => {
const home = await tmpHome();
const server = await startServer({
hostIdentity: TEST_HOST_IDENTITY,
host: '127.0.0.1',
port: 0,
homeDir: home,
logLevel: 'silent',
debugEndpoints: true,
});
running.push(server);
expect(await probeDebug(server)).toBe(200);
});
});