@fedify/fedify
Version:
An ActivityPub server framework
93 lines (92 loc) • 2.92 kB
JavaScript
import "@js-temporal/polyfill";
import "urlpattern-polyfill";
globalThis.addEventListener = () => {};
import { n as RouterError, t as Router } from "../router-CrMLXoOr.mjs";
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
import "../std__assert-CRDpx_HF.mjs";
import { n as assertFalse } from "../assert_rejects-B-qJtC9Z.mjs";
import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
import { t as assert } from "../assert-DikXweDx.mjs";
import { test } from "@fedify/fixture";
//#region src/federation/router.test.ts
function setUp(options = {}) {
const router = new Router(options);
router.add("/users/{name}", "user");
router.add("/users/{name}/posts/{postId}" + (options.trailingSlashInsensitive ? "/" : ""), "post");
return router;
}
test("Router.clone()", () => {
const original = setUp();
const clone = original.clone();
clone.add("/users/{name}/friends", "friends");
assert(clone.has("friends"));
assertEquals(clone.route("/users/alice/friends"), {
name: "friends",
template: "/users/{name}/friends",
values: { name: "alice" }
});
assertFalse(original.has("friends"));
assertEquals(original.route("/users/alice/friends"), null);
});
test("Router.add()", () => {
const router = new Router();
assertEquals(router.add("/users", "users"), /* @__PURE__ */ new Set());
assertEquals(router.add("/users/{name}", "user"), new Set(["name"]));
assertEquals(router.add("/users/{name}/posts/{postId}", "post"), new Set(["name", "postId"]));
assertThrows(() => router.add("foo", "name"), RouterError);
});
test("Router.route()", () => {
let router = setUp();
assertEquals(router.route("/users/alice"), {
name: "user",
template: "/users/{name}",
values: { name: "alice" }
});
assertEquals(router.route("/users/bob/"), null);
assertEquals(router.route("/users/alice/posts/123"), {
name: "post",
template: "/users/{name}/posts/{postId}",
values: {
name: "alice",
postId: "123"
}
});
assertEquals(router.route("/users/bob/posts/456/"), null);
router = setUp({ trailingSlashInsensitive: true });
assertEquals(router.route("/users/alice"), {
name: "user",
template: "/users/{name}",
values: { name: "alice" }
});
assertEquals(router.route("/users/bob/"), {
name: "user",
template: "/users/{name}",
values: { name: "bob" }
});
assertEquals(router.route("/users/alice/posts/123"), {
name: "post",
template: "/users/{name}/posts/{postId}/",
values: {
name: "alice",
postId: "123"
}
});
assertEquals(router.route("/users/bob/posts/456/"), {
name: "post",
template: "/users/{name}/posts/{postId}/",
values: {
name: "bob",
postId: "456"
}
});
});
test("Router.build()", () => {
const router = setUp();
assertEquals(router.build("user", { name: "alice" }), "/users/alice");
assertEquals(router.build("post", {
name: "alice",
postId: "123"
}), "/users/alice/posts/123");
});
//#endregion
export {};