| import { describe, expect, it } from "vitest"; |
| import { AxiosError } from "axios"; |
| import { HttpError } from "@openhands/typescript-client"; |
| import { getApiErrorMessage } from "#/utils/api-error-message"; |
|
|
| describe("getApiErrorMessage", () => { |
| it("returns the body `detail` from an HttpError when no `message` is present", () => { |
| |
| const error = new HttpError(422, "Unprocessable Entity", { |
| detail: "Automation spec is invalid", |
| }); |
|
|
| |
| expect(getApiErrorMessage(error, "fallback")).toBe( |
| "Automation spec is invalid", |
| ); |
| }); |
|
|
| it("returns the response body `message` from an axios error", () => { |
| |
| const error = new AxiosError("Request failed with status code 500"); |
| error.response = { |
| status: 500, |
| data: { message: "Runner exploded" }, |
| } as never; |
|
|
| |
| expect(getApiErrorMessage(error, "fallback")).toBe("Runner exploded"); |
| }); |
|
|
| it("returns the fallback when the error carries no usable information", () => { |
| expect(getApiErrorMessage(null, "fallback")).toBe("fallback"); |
| }); |
| }); |
|
|