Skip to content

Commit 1403059

Browse files
committed
chore: lower asset limit log level
1 parent 53daa86 commit 1403059

2 files changed

Lines changed: 77 additions & 2 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { afterEach, describe, expect, test, vi } from "vitest";
2+
3+
const createUploadName = vi.hoisted(() => vi.fn());
4+
const createContext = vi.hoisted(() => vi.fn());
5+
const preventCrossOriginCookie = vi.hoisted(() => vi.fn());
6+
const checkCsrf = vi.hoisted(() => vi.fn());
7+
8+
vi.mock("@webstudio-is/asset-uploader/index.server", () => ({
9+
createUploadName,
10+
loadAssetsByProject: vi.fn(),
11+
}));
12+
13+
vi.mock("~/shared/context.server", () => ({
14+
createContext,
15+
}));
16+
17+
vi.mock("~/services/no-cross-origin-cookie", () => ({
18+
preventCrossOriginCookie,
19+
}));
20+
21+
vi.mock("~/services/csrf-session.server", () => ({
22+
checkCsrf,
23+
}));
24+
25+
import { action } from "./rest.assets";
26+
27+
describe("rest.assets action", () => {
28+
afterEach(() => {
29+
vi.restoreAllMocks();
30+
vi.clearAllMocks();
31+
});
32+
33+
test("logs asset limit errors as info", async () => {
34+
const consoleError = vi
35+
.spyOn(console, "error")
36+
.mockImplementation(() => {});
37+
const consoleInfo = vi.spyOn(console, "info").mockImplementation(() => {});
38+
const error = new Error("The maximum number of assets per project is 100.");
39+
createContext.mockResolvedValue({
40+
planFeatures: {
41+
maxAssetsPerProject: 100,
42+
},
43+
});
44+
createUploadName.mockRejectedValue(error);
45+
const formData = new FormData();
46+
formData.set("assetId", "asset-id");
47+
formData.set("projectId", "project-id");
48+
formData.set("type", "image/png");
49+
formData.set("filename", "image.png");
50+
const request = new Request("https://apps.webstudio.is/rest/assets", {
51+
method: "POST",
52+
body: formData,
53+
});
54+
55+
await expect(
56+
action({
57+
request,
58+
params: {},
59+
context: {},
60+
})
61+
).resolves.toEqual({
62+
errors: "The maximum number of assets per project is 100.",
63+
});
64+
expect(consoleError).not.toHaveBeenCalled();
65+
expect(consoleInfo).toHaveBeenCalledWith(error);
66+
});
67+
});

apps/builder/app/routes/rest.assets.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import { preventCrossOriginCookie } from "~/services/no-cross-origin-cookie";
1212
import { checkCsrf } from "~/services/csrf-session.server";
1313
import { parseError } from "~/shared/error/error-parse";
1414

15+
const maxAssetsErrorPrefix = "The maximum number of assets per project is ";
16+
1517
export const loader = async ({
1618
params,
1719
request,
@@ -61,10 +63,16 @@ export const action = async (props: ActionFunctionArgs) => {
6163
};
6264
}
6365
} catch (error) {
64-
console.error(error);
66+
const parsedError = parseError(error);
67+
68+
if (parsedError.message.startsWith(maxAssetsErrorPrefix)) {
69+
console.info(error);
70+
} else {
71+
console.error(error);
72+
}
6573

6674
return {
67-
errors: parseError(error).message,
75+
errors: parsedError.message,
6876
};
6977
}
7078
};

0 commit comments

Comments
 (0)