First Release of Claw3D (#11)
Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
// @vitest-environment node
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
describe("createAccessGate", () => {
|
||||
it("allows when token is unset", async () => {
|
||||
const { createAccessGate } = await import("../../server/access-gate");
|
||||
const gate = createAccessGate({ token: "" });
|
||||
expect(gate.allowUpgrade({ headers: {} })).toBe(true);
|
||||
});
|
||||
|
||||
it("rejects /api requests without cookie when enabled", async () => {
|
||||
const { createAccessGate } = await import("../../server/access-gate");
|
||||
const gate = createAccessGate({ token: "abc" });
|
||||
|
||||
let statusCode = 0;
|
||||
let ended = false;
|
||||
const res = {
|
||||
setHeader: () => {},
|
||||
end: () => {
|
||||
ended = true;
|
||||
},
|
||||
get statusCode() {
|
||||
return statusCode;
|
||||
},
|
||||
set statusCode(value: number) {
|
||||
statusCode = value;
|
||||
},
|
||||
};
|
||||
|
||||
const handled = gate.handleHttp(
|
||||
{ url: "/api/studio", headers: { host: "example.test" } },
|
||||
res
|
||||
);
|
||||
|
||||
expect(handled).toBe(true);
|
||||
expect(statusCode).toBe(401);
|
||||
expect(ended).toBe(true);
|
||||
});
|
||||
|
||||
it("allows upgrades when cookie matches", async () => {
|
||||
const { createAccessGate } = await import("../../server/access-gate");
|
||||
const gate = createAccessGate({ token: "abc" });
|
||||
expect(
|
||||
gate.allowUpgrade({ headers: { cookie: "studio_access=abc" } })
|
||||
).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user