mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 08:28:19 +01:00
126 lines
3.8 KiB
TypeScript
126 lines
3.8 KiB
TypeScript
import { afterAll, beforeAll, describe, expect, test } from "bun:test";
|
|
import type { Notification as ApiNotification } from "@lysand-org/client/types";
|
|
import { config } from "~/packages/config-manager/index";
|
|
import { getTestUsers, sendTestRequest } from "~/tests/utils";
|
|
import { meta } from "./index";
|
|
|
|
const { users, tokens, deleteUsers } = await getTestUsers(2);
|
|
let notifications: ApiNotification[] = [];
|
|
|
|
// Create some test notifications: follow, favourite, reblog, mention
|
|
beforeAll(async () => {
|
|
await sendTestRequest(
|
|
new Request(
|
|
new URL(
|
|
`/api/v1/accounts/${users[0].id}/follow`,
|
|
config.http.base_url,
|
|
),
|
|
{
|
|
method: "POST",
|
|
headers: {
|
|
Authorization: `Bearer ${tokens[1].accessToken}`,
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({}),
|
|
},
|
|
),
|
|
);
|
|
|
|
notifications = await sendTestRequest(
|
|
new Request(new URL("/api/v1/notifications", config.http.base_url), {
|
|
headers: {
|
|
Authorization: `Bearer ${tokens[0].accessToken}`,
|
|
},
|
|
}),
|
|
).then((r) => r.json());
|
|
|
|
expect(notifications.length).toBe(1);
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await deleteUsers();
|
|
});
|
|
|
|
// /api/v1/notifications/:id
|
|
describe(meta.route, () => {
|
|
test("should return 401 if not authenticated", async () => {
|
|
const response = await sendTestRequest(
|
|
new Request(
|
|
new URL(
|
|
meta.route.replace(
|
|
":id",
|
|
"00000000-0000-0000-0000-000000000000",
|
|
),
|
|
config.http.base_url,
|
|
),
|
|
),
|
|
);
|
|
|
|
expect(response.status).toBe(401);
|
|
});
|
|
|
|
test("should return 422 if ID is invalid", async () => {
|
|
const response = await sendTestRequest(
|
|
new Request(
|
|
new URL(
|
|
meta.route.replace(":id", "invalid"),
|
|
config.http.base_url,
|
|
),
|
|
{
|
|
headers: {
|
|
Authorization: `Bearer ${tokens[0].accessToken}`,
|
|
},
|
|
},
|
|
),
|
|
);
|
|
expect(response.status).toBe(422);
|
|
});
|
|
|
|
test("should return 404 if notification not found", async () => {
|
|
const response = await sendTestRequest(
|
|
new Request(
|
|
new URL(
|
|
meta.route.replace(
|
|
":id",
|
|
"00000000-0000-0000-0000-000000000000",
|
|
),
|
|
config.http.base_url,
|
|
),
|
|
{
|
|
headers: {
|
|
Authorization: `Bearer ${tokens[0].accessToken}`,
|
|
},
|
|
},
|
|
),
|
|
);
|
|
|
|
expect(response.status).toBe(404);
|
|
});
|
|
|
|
test("should return notification", async () => {
|
|
const response = await sendTestRequest(
|
|
new Request(
|
|
new URL(
|
|
meta.route.replace(":id", notifications[0].id),
|
|
config.http.base_url,
|
|
),
|
|
{
|
|
headers: {
|
|
Authorization: `Bearer ${tokens[0].accessToken}`,
|
|
},
|
|
},
|
|
),
|
|
);
|
|
|
|
expect(response.status).toBe(200);
|
|
|
|
const notification = (await response.json()) as ApiNotification;
|
|
|
|
expect(notification).toBeDefined();
|
|
expect(notification.id).toBe(notifications[0].id);
|
|
expect(notification.type).toBe("follow");
|
|
expect(notification.account).toBeDefined();
|
|
expect(notification.account?.id).toBe(users[1].id);
|
|
});
|
|
});
|