Skip to main content
This release is 23 versions behind 1.4.9 — the latest version of @fedify/fedify. Jump to latest

Built and signed on GitHub Actions

An ActivityPub/fediverse server framework

This package works with Node.js, Deno, Bun
This package works with Node.js
This package works with Deno
This package works with Bun
JSR Score
94%
Published
3 months ago (1.3.3)
Package root>federation>router.test.ts
import { assertEquals, assertThrows } from "jsr:@std/assert@^0.226.0"; import { test } from "../testing/mod.ts"; import { Router, RouterError, type RouterOptions } from "./router.ts"; function setUp(options: RouterOptions = {}): Router { const router = new Router(options); router.add("/users/{name}", "user"); router.add( "/users/{name}/posts/{postId}" + (options.trailingSlashInsensitive ? "/" : ""), "post", ); return router; } test("Router.add()", () => { const router = new Router(); assertEquals(router.add("/users", "users"), 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", ); });