@fedify/fedify
Version:
An ActivityPub server framework
98 lines (94 loc) • 3.06 kB
JavaScript
import { Temporal } from "@js-temporal/polyfill";
import { URLPattern } from "urlpattern-polyfill";
globalThis.addEventListener = () => {};
import { assertEquals } from "../assert_equals-CTYbeopb.js";
import { assert } from "../assert-DmFG7ppO.js";
import "../assert_instance_of-CF09JHYM.js";
import { Router, RouterError } from "../router-D_aVZZUc.js";
import { test } from "../testing-BZ0dJ4qn.js";
import "../std__assert-vp0TKMS1.js";
import { assertFalse } from "../assert_rejects-C-sxEMM5.js";
import "../assert_is_error-nrwA1GeT.js";
import "../assert_not_equals-Dc7y-V5Q.js";
import { assertThrows } from "../assert_throws-Cn9C6Jur.js";
//#region 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