30 lines
1001 B
TypeScript
30 lines
1001 B
TypeScript
import { createUser, formWithFile, get, PNG, put, test } from "../helpers.ts";
|
|
import type { SelfUser } from "../../../shared/user.ts";
|
|
import { assertEquals, assertFalse } from "@std/assert";
|
|
|
|
test("avatars: upload, serve, and 404 when there is none", async () => {
|
|
const user = await createUser();
|
|
assertEquals((await get(`/api/users/${user.id}/avatar`)).status, 404);
|
|
assertEquals(
|
|
(await get(`/api/users/${crypto.randomUUID()}/avatar`)).status,
|
|
404,
|
|
);
|
|
const res = await put<SelfUser>("/api/me/avatar", {
|
|
auth: user.auth,
|
|
form: formWithFile(PNG),
|
|
});
|
|
assertEquals(res.status, 200);
|
|
assertEquals(res.data.avatarMime, "image/png");
|
|
assertFalse("passwordHash" in res.data);
|
|
const served = await get(`/api/users/${user.id}/avatar`);
|
|
assertEquals(served.status, 200);
|
|
assertEquals(served.bytes, PNG);
|
|
assertEquals(
|
|
(await put("/api/me/avatar", {
|
|
auth: user.auth,
|
|
form: formWithFile(new Uint8Array([1, 2, 3])),
|
|
})).status,
|
|
400,
|
|
);
|
|
});
|