/ opencodehub / cli / src / lib / api.test.ts
Swadhin Biswas feat(cli): expand command coverage and config support · 3/6/2026
7e372c1
27 lines · 965 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { describe, expect, it } from "vitest";
import { parseApiErrorMessage } from "./api-error.js";

describe("parseApiErrorMessage", () => {
  it("uses plain string error body", () => {
    expect(parseApiErrorMessage(400, "Bad request")).toBe("Bad request");
  });

  it("reads common message fields", () => {
    expect(parseApiErrorMessage(403, { message: "Forbidden" })).toBe("Forbidden");
    expect(parseApiErrorMessage(401, { error: "Unauthorized" })).toBe("Unauthorized");
    expect(parseApiErrorMessage(422, { detail: "Validation failed" })).toBe("Validation failed");
  });

  it("flattens array style errors", () => {
    expect(
      parseApiErrorMessage(422, {
        errors: [{ message: "name is required" }, "email is invalid"],
      }),
    ).toBe("name is required; email is invalid");
  });

  it("falls back when no message can be extracted", () => {
    expect(parseApiErrorMessage(500, { foo: "bar" })).toBe("API error: 500");
  });
});