UNPKG

@fedify/fedify

Version:

An ActivityPub server framework

132 lines (128 loc) 4.02 kB
import { Temporal } from "@js-temporal/polyfill"; import { URLPattern } from "urlpattern-polyfill"; globalThis.addEventListener = () => {}; import { assertEquals } from "../assert_equals-CTYbeopb.js"; import "../assert-DmFG7ppO.js"; import "../assert_instance_of-CF09JHYM.js"; import { MemoryKvStore } from "../kv-BMY6Qf_A.js"; import { createFederation, handleNodeInfo, handleNodeInfoJrd } from "../middleware-DlU2_Djj.js"; import "../docloader-C8mmLN-Y.js"; import "../url-kTAI6_KP.js"; import { parseSemVer } from "../semver-DWClQt_5.js"; import "../client-rv6n0nKR.js"; import "../router-D_aVZZUc.js"; import "../types-C7C_l-jz.js"; import "../multibase-DeCHcK8L.js"; import "../vocab-dDpPQ0fF.js"; import "../langstr-DbWheeIS.js"; import "../lookup-Ozuw-rxN.js"; import "../type-D2s5lmbZ.js"; import "../actor-BP-NTJ2m.js"; import "../key-CPSlDkCj.js"; import "../http-BmfI6U39.js"; import "../authdocloader-Banw__l6.js"; import "../ld-D9kk1Uy2.js"; import "../owner-DF6Fg4-s.js"; import "../proof-13QPysOU.js"; import "../lookup-DNXR408t.js"; import "../inbox-AwdJVoMZ.js"; import "../builder-EdzpUb9N.js"; import "../collection-Dfb0TPno.js"; import "../keycache-BPwY_Up0.js"; import "../retry-BiIhZWgD.js"; import "../send-CaL5Xv1F.js"; import { test } from "../testing-BZ0dJ4qn.js"; import "../std__assert-vp0TKMS1.js"; import "../assert_rejects-C-sxEMM5.js"; import "../assert_is_error-nrwA1GeT.js"; import "../assert_not_equals-Dc7y-V5Q.js"; import "../assert_throws-Cn9C6Jur.js"; import "../docloader-09nVWLAZ.js"; import { createRequestContext } from "../context-Buzj1YKD.js"; //#region nodeinfo/handler.test.ts test("handleNodeInfo()", async () => { const request = new Request("https://example.com/nodeinfo/2.1"); const federation = createFederation({ kv: new MemoryKvStore() }); const context = createRequestContext({ federation, data: void 0, request, url: new URL(request.url) }); const nodeInfoDispatcher = (_ctx) => ({ software: { name: "test", version: parseSemVer("1.2.3") }, protocols: ["activitypub"], usage: { users: { total: 3, activeHalfyear: 2, activeMonth: 1 }, localPosts: 123, localComments: 456 } }); const response = await handleNodeInfo(request, { context, nodeInfoDispatcher }); assertEquals(response.status, 200); assertEquals(response.headers.get("Content-Type"), "application/json; profile=\"http://nodeinfo.diaspora.software/ns/schema/2.1#\""); const json = await response.json(); assertEquals(json, { "$schema": "http://nodeinfo.diaspora.software/ns/schema/2.1#", version: "2.1", software: { name: "test", version: "1.2.3" }, protocols: ["activitypub"], services: { inbound: [], outbound: [] }, openRegistrations: false, usage: { users: { total: 3, activeHalfyear: 2, activeMonth: 1 }, localPosts: 123, localComments: 456 }, metadata: {} }); }); test("handleNodeInfoJrd()", async () => { const request = new Request("https://example.com/.well-known/nodeinfo"); const federation = createFederation({ kv: new MemoryKvStore() }); let context = createRequestContext({ federation, data: void 0, request, url: new URL(request.url) }); let response = await handleNodeInfoJrd(request, context); assertEquals(response.status, 200); assertEquals(response.headers.get("Content-Type"), "application/jrd+json"); assertEquals(await response.json(), { links: [] }); context = createRequestContext({ ...context, getNodeInfoUri() { return new URL("https://example.com/nodeinfo/2.1"); } }); response = await handleNodeInfoJrd(request, context); assertEquals(response.status, 200); assertEquals(response.headers.get("Content-Type"), "application/jrd+json"); assertEquals(await response.json(), { links: [{ href: "https://example.com/nodeinfo/2.1", rel: "http://nodeinfo.diaspora.software/ns/schema/2.1", type: "application/json; profile=\"http://nodeinfo.diaspora.software/ns/schema/2.1#\"" }] }); }); //#endregion