import { describe, it, expect } from "vitest"; import { isNonRecoverableSlackAuthError } from "./provider.js"; describe("isNonRecoverableSlackAuthError", () => { it.each([ "An API error occurred: account_inactive", "An API error occurred: invalid_auth", "An API error occurred: token_revoked", "An API error occurred: token_expired", "An API error occurred: not_authed", "An API error occurred: org_login_required", "An API error occurred: team_access_not_granted", "An API error occurred: missing_scope", "An API error occurred: cannot_find_service", "An API error occurred: invalid_token", ])("returns true for non-recoverable error: %s", (msg) => { expect(isNonRecoverableSlackAuthError(new Error(msg))).toBe(true); }); it("returns true when error is a plain string", () => { expect(isNonRecoverableSlackAuthError("account_inactive")).toBe(true); }); it("matches case-insensitively", () => { expect(isNonRecoverableSlackAuthError(new Error("ACCOUNT_INACTIVE"))).toBe(true); expect(isNonRecoverableSlackAuthError(new Error("Invalid_Auth"))).toBe(true); }); it.each([ "Connection timed out", "ECONNRESET", "Network request failed", "socket hang up", "ETIMEDOUT", "rate_limited", ])("returns false for recoverable/transient error: %s", (msg) => { expect(isNonRecoverableSlackAuthError(new Error(msg))).toBe(false); }); it("returns false for non-error values", () => { expect(isNonRecoverableSlackAuthError(null)).toBe(false); expect(isNonRecoverableSlackAuthError(undefined)).toBe(false); expect(isNonRecoverableSlackAuthError(42)).toBe(false); expect(isNonRecoverableSlackAuthError({})).toBe(false); }); it("returns false for empty string", () => { expect(isNonRecoverableSlackAuthError("")).toBe(false); expect(isNonRecoverableSlackAuthError(new Error(""))).toBe(false); }); });