Files
unstorage/test/drivers/http.test.ts
2024-12-12 14:54:57 +01:00

54 lines
1.7 KiB
TypeScript

import { describe, afterAll, expect, it } from "vitest";
import driver from "../../src/drivers/http";
import { createStorage } from "../../src";
import { createStorageServer } from "../../src/server";
import { listen } from "listhen";
import { testDriver } from "./utils";
describe("drivers: http", async () => {
const remoteStorage = createStorage();
const server = createStorageServer(remoteStorage, {
authorize(req) {
if (req.event.node.req.headers["x-global-header"] !== "1") {
// console.log(req.key, req.type, req.event.node.req.headers);
throw new Error("Missing global test header!");
}
if (
req.key === "authorized" &&
req.event.node.req.headers["x-auth-header"] !== "1"
) {
// console.log(req.key, req.type, req.event.node.req.headers);
throw new Error("Missing auth test header!");
}
},
});
const listener = await listen(server.handle, {
port: { random: true },
});
afterAll(async () => {
await listener.close();
});
testDriver({
driver: driver({
base: listener!.url,
headers: { "x-global-header": "1" },
}),
async additionalTests(ctx) {
it("custom headers", async () => {
await ctx.storage.setItem("authorized", "test", {
headers: { "x-auth-header": "1" },
});
});
it("null item", async () => {
await ctx.storage.setItem("nullItem", null);
await ctx.storage.setItem("nullStringItem", "null");
expect(await ctx.storage.getItem("nullItem")).toBeNull();
expect(await ctx.storage.getItem("nanItem")).toBeNull();
expect(await ctx.storage.getItem("nullStringItem")).toBeNull();
});
},
});
});