Fix Claude test credential setup
This commit is contained in:
@@ -2,7 +2,7 @@ import net from "node:net";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { existsSync } from "node:fs";
|
||||
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
||||
import { copyFile, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { experimental_createMCPClient } from "ai";
|
||||
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
||||
@@ -36,6 +36,14 @@ const CLAUDE_SETTINGS = {
|
||||
},
|
||||
};
|
||||
|
||||
async function copyClaudeCredentials(sourceDir: string, targetDir: string): Promise<void> {
|
||||
const sourceCredentials = path.join(sourceDir, ".credentials.json");
|
||||
if (!existsSync(sourceCredentials)) {
|
||||
return;
|
||||
}
|
||||
await copyFile(sourceCredentials, path.join(targetDir, ".credentials.json"));
|
||||
}
|
||||
|
||||
async function getAvailablePort(): Promise<number> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const server = net.createServer();
|
||||
@@ -145,10 +153,13 @@ describe("agent MCP end-to-end", () => {
|
||||
process.env.CODEX_SESSION_DIR = codexSessionDir;
|
||||
process.env.CODEX_HOME = codexHome;
|
||||
const previousClaudeConfigDir = process.env.CLAUDE_CONFIG_DIR;
|
||||
const sourceClaudeConfigDir =
|
||||
previousClaudeConfigDir ?? path.join(os.homedir(), ".claude");
|
||||
const claudeConfigDir = await mkdtemp(path.join(os.tmpdir(), "claude-config-"));
|
||||
const claudeSettingsText = `${JSON.stringify(CLAUDE_SETTINGS, null, 2)}\n`;
|
||||
await writeFile(path.join(claudeConfigDir, "settings.json"), claudeSettingsText, "utf8");
|
||||
await writeFile(path.join(claudeConfigDir, "settings.local.json"), claudeSettingsText, "utf8");
|
||||
await copyClaudeCredentials(sourceClaudeConfigDir, claudeConfigDir);
|
||||
process.env.CLAUDE_CONFIG_DIR = claudeConfigDir;
|
||||
|
||||
const daemon = await createPaseoDaemon(daemonConfig);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { afterAll, beforeAll, describe, expect, test, vi } from "vitest";
|
||||
import { createServer as createHTTPServer } from "http";
|
||||
import { randomUUID } from "node:crypto";
|
||||
import {
|
||||
copyFileSync,
|
||||
existsSync,
|
||||
mkdtempSync,
|
||||
readFileSync,
|
||||
@@ -34,17 +35,6 @@ import { AgentManager } from "../agent-manager.js";
|
||||
import { AgentRegistry } from "../agent-registry.js";
|
||||
import { createAgentMcpServer } from "../mcp-server.js";
|
||||
|
||||
const hasClaudeCredentials = Boolean(
|
||||
process.env.CLAUDE_CODE_OAUTH_TOKEN || process.env.ANTHROPIC_API_KEY?.trim()?.length
|
||||
);
|
||||
const requireClaudeCredentials = () => {
|
||||
if (!hasClaudeCredentials) {
|
||||
throw new Error(
|
||||
"Claude credentials missing. Set CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY to run ClaudeAgentClient integration tests."
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
function tmpCwd(): string {
|
||||
const dir = mkdtempSync(path.join(os.tmpdir(), "claude-agent-e2e-"));
|
||||
try {
|
||||
@@ -54,8 +44,18 @@ function tmpCwd(): string {
|
||||
}
|
||||
}
|
||||
|
||||
function copyClaudeCredentials(sourceDir: string, targetDir: string): void {
|
||||
const sourceCredentials = path.join(sourceDir, ".credentials.json");
|
||||
if (!existsSync(sourceCredentials)) {
|
||||
return;
|
||||
}
|
||||
copyFileSync(sourceCredentials, path.join(targetDir, ".credentials.json"));
|
||||
}
|
||||
|
||||
function useTempClaudeConfigDir(): () => void {
|
||||
const previousConfigDir = process.env.CLAUDE_CONFIG_DIR;
|
||||
const sourceConfigDir =
|
||||
previousConfigDir ?? path.join(os.homedir(), ".claude");
|
||||
const configDir = mkdtempSync(path.join(os.tmpdir(), "claude-config-"));
|
||||
const settings = {
|
||||
permissions: {
|
||||
@@ -72,6 +72,7 @@ function useTempClaudeConfigDir(): () => void {
|
||||
const settingsText = `${JSON.stringify(settings, null, 2)}\n`;
|
||||
writeFileSync(path.join(configDir, "settings.json"), settingsText, "utf8");
|
||||
writeFileSync(path.join(configDir, "settings.local.json"), settingsText, "utf8");
|
||||
copyClaudeCredentials(sourceConfigDir, configDir);
|
||||
process.env.CLAUDE_CONFIG_DIR = configDir;
|
||||
return () => {
|
||||
if (previousConfigDir === undefined) {
|
||||
@@ -274,9 +275,6 @@ describe("ClaudeAgentClient (SDK integration)", () => {
|
||||
},
|
||||
});
|
||||
|
||||
beforeAll(() => {
|
||||
requireClaudeCredentials();
|
||||
});
|
||||
beforeAll(() => {
|
||||
restoreClaudeConfigDir = useTempClaudeConfigDir();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user