mirror of
https://github.com/kmc7468/arkvault.git
synced 2026-11-04 08:10:28 +09:00
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import type { RequestEvent } from "@sveltejs/kit";
|
|
import { TRPCError } from "@trpc/server";
|
|
import { beforeEach, describe, expect, it } from "vitest";
|
|
import { appRouter } from "#trpc/router.server.js";
|
|
import { createDirectory, createUser, resetDatabase } from "../helpers/database";
|
|
|
|
const createCaller = (userId: number, clientId?: number) =>
|
|
appRouter.createCaller({
|
|
locals: { ip: "127.0.0.1", userAgent: "test", session: { id: "session", userId, clientId } },
|
|
} as RequestEvent);
|
|
|
|
beforeEach(resetDatabase);
|
|
|
|
describe("tRPC error mapping", () => {
|
|
it("maps integrity errors to tRPC errors", async () => {
|
|
const { userId: ownerId } = await createUser();
|
|
const { userId, clientId } = await createUser();
|
|
const directoryId = await createDirectory(ownerId);
|
|
|
|
const error = await createCaller(userId, clientId)
|
|
.directory.create({
|
|
parent: directoryId,
|
|
mekVersion: 1,
|
|
dek: "ZGVr",
|
|
dekVersion: new Date(),
|
|
name: "bmFtZQ==",
|
|
nameIv: "aXY=",
|
|
})
|
|
.catch((e) => e);
|
|
|
|
expect(error).toBeInstanceOf(TRPCError);
|
|
expect(error).toMatchObject({ code: "NOT_FOUND", message: "Directory not found" });
|
|
});
|
|
|
|
it("maps service errors to tRPC errors", async () => {
|
|
const { userId, clientId } = await createUser();
|
|
|
|
await expect(
|
|
createCaller(userId, clientId).directory.create({
|
|
parent: "root",
|
|
mekVersion: 1,
|
|
dek: "ZGVr",
|
|
dekVersion: new Date(Date.now() - 3600 * 1000),
|
|
name: "bmFtZQ==",
|
|
nameIv: "aXY=",
|
|
}),
|
|
).rejects.toMatchObject({ code: "BAD_REQUEST", message: "Invalid DEK version" });
|
|
});
|
|
|
|
it("rejects clients that are not active", async () => {
|
|
const { userId } = await createUser();
|
|
|
|
await expect(createCaller(userId).file.list()).rejects.toMatchObject({ code: "FORBIDDEN" });
|
|
});
|
|
});
|