diff --git a/site/src/api/errors.test.ts b/site/src/api/errors.test.ts index d3612b254e99d..f17a1787112fd 100644 --- a/site/src/api/errors.test.ts +++ b/site/src/api/errors.test.ts @@ -3,6 +3,7 @@ import { getValidationErrorMessage, isApiError, mapApiErrorToFieldErrors, + getErrorMessage, } from "./errors"; describe("isApiError", () => { @@ -82,4 +83,21 @@ describe("getValidationErrorMessage", () => { ), ).toEqual(""); }); + + it("returns default message for error that is empty string", () => { + expect(getErrorMessage("", "Something went wrong.")).toBe( + "Something went wrong.", + ); + }); + + it("returns default message for 404 API response", () => { + expect( + getErrorMessage( + mockApiError({ + message: "", + }), + "Something went wrong.", + ), + ).toBe("Something went wrong."); + }); }); diff --git a/site/src/api/errors.ts b/site/src/api/errors.ts index b7fbd0c7d76b2..953eefa47b5d5 100644 --- a/site/src/api/errors.ts +++ b/site/src/api/errors.ts @@ -62,10 +62,13 @@ export const getErrorMessage = ( error: unknown, defaultMessage: string, ): string => { - if (isApiError(error)) { + // if error is API error + // 404s result in the default message being returned + if (isApiError(error) && error.response.data.message) { return error.response.data.message; } - if (typeof error === "string") { + // if error is a non-empty string + if (error && typeof error === "string") { return error; } return defaultMessage;