36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { isAuthErrorMessage } from "./pi-embedded-helpers.js";
|
|
import { DEFAULT_AGENTS_FILENAME } from "./workspace.js";
|
|
|
|
const _makeFile = (overrides: Partial<WorkspaceBootstrapFile>): WorkspaceBootstrapFile => ({
|
|
name: DEFAULT_AGENTS_FILENAME,
|
|
path: "/tmp/AGENTS.md",
|
|
content: "",
|
|
missing: false,
|
|
...overrides,
|
|
});
|
|
describe("isAuthErrorMessage", () => {
|
|
it("matches credential validation errors", () => {
|
|
const samples = [
|
|
'No credentials found for profile "anthropic:default".',
|
|
"No API key found for profile openai.",
|
|
];
|
|
for (const sample of samples) {
|
|
expect(isAuthErrorMessage(sample)).toBe(true);
|
|
}
|
|
});
|
|
it("matches OAuth refresh failures", () => {
|
|
const samples = [
|
|
"OAuth token refresh failed for anthropic: Failed to refresh OAuth token for anthropic. Please try again or re-authenticate.",
|
|
"Please re-authenticate to continue.",
|
|
];
|
|
for (const sample of samples) {
|
|
expect(isAuthErrorMessage(sample)).toBe(true);
|
|
}
|
|
});
|
|
it("ignores unrelated errors", () => {
|
|
expect(isAuthErrorMessage("rate limit exceeded")).toBe(false);
|
|
expect(isAuthErrorMessage("billing issue detected")).toBe(false);
|
|
});
|
|
});
|