UNPKG

@fedify/fedify

Version:

An ActivityPub server framework

59 lines (58 loc) 2.91 kB
import "@js-temporal/polyfill"; import "urlpattern-polyfill"; globalThis.addEventListener = () => {}; 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 assert } from "../assert-DikXweDx.mjs"; import { o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-DGu1NFwu.mjs"; import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-DRHNR5YO.mjs"; import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture"; import { Create, CryptographicKey, lookupObject } from "@fedify/vocab"; //#region src/sig/owner.test.ts test("doesActorOwnKey()", async () => { const options = { documentLoader: mockDocumentLoader, contextLoader: mockDocumentLoader }; const activity = new Create({ actor: new URL("https://example.com/person") }); assert(await doesActorOwnKey(activity, rsaPublicKey1, options)); assert(await doesActorOwnKey(activity, rsaPublicKey2, options)); const activity2 = new Create({ actor: new URL("https://example.com/hong-gildong") }); assertFalse(await doesActorOwnKey(activity2, rsaPublicKey1, options)); assertFalse(await doesActorOwnKey(activity2, rsaPublicKey2, options)); }); test("getKeyOwner()", async () => { const options = { documentLoader: mockDocumentLoader, contextLoader: mockDocumentLoader }; assertEquals(await getKeyOwner(new URL("https://example.com/users/handle#main-key"), options), await lookupObject("https://example.com/users/handle", options)); const owner2 = await getKeyOwner(new URL("https://example.com/key"), options); assertEquals(owner2, await lookupObject("https://example.com/person", options)); assertEquals(await getKeyOwner(rsaPublicKey1, options), owner2); assertEquals(await getKeyOwner(new URL("https://example.com/key2"), options), null); assertEquals(await getKeyOwner(new URL("https://example.com/object"), options), null); }); test("doesActorOwnKey() records OpenTelemetry span", async () => { const [tracerProvider, exporter] = createTestTracerProvider(); assert(await doesActorOwnKey(new Create({ id: new URL("https://example.com/activity"), actor: new URL("https://example.com/person") }), new CryptographicKey({ id: new URL("https://example.com/person#key"), owner: new URL("https://example.com/person") }), { documentLoader: mockDocumentLoader, tracerProvider })); const spans = exporter.getSpans("activitypub.verify_key_ownership"); assertEquals(spans.length, 1); const span = spans[0]; assertEquals(span.attributes["activitypub.actor.id"], "https://example.com/person"); assertEquals(span.attributes["activitypub.key.id"], "https://example.com/person#key"); assertEquals(span.attributes["activitypub.key_ownership.verified"], true); assertEquals(span.attributes["activitypub.key_ownership.method"], "owner_id"); }); //#endregion export {};