testPdsEndpointsAreOrigins

tcmts.atproto.test.testPdsEndpointsAreOrigins · #5z6nh7jz · term

import { isDid, pdsOf } from "#codebase/tcmts/atproto";
import assert from "node:assert/strict";

export const testPdsEndpointsAreOrigins = () => {
  const doc = (serviceEndpoint: string) => ({
    id: "did:plc:x",
    service: [{ id: "#atproto_pds", type: "AtprotoPersonalDataServer", serviceEndpoint }],
  });
  const was = process.env.TCM_ATPROTO_LOCAL;
  delete process.env.TCM_ATPROTO_LOCAL;
  try {
    assert.equal(pdsOf(doc("https://pds.example/"), "did:plc:x"), "https://pds.example");
    for (const bad of [
      "http://pds.example",
      "https://pds.example/admin?",
      "https://pds.example/#",
      "https://pds.example?x=1",
      "https://a:b@pds.example",
      "javascript:alert(1)",
    ])
      assert.throws(() => pdsOf(doc(bad), "did:plc:x"), /must be/, bad);
    assert.ok(isDid("did:plc:ewvi7nxzyoun6zhxrhs64oiz") && isDid("did:web:example.com%3A8443"));
    for (const bad of [
      "did:plc:real/codes.tcm.star/k/junk",
      "did:plc:",
      "did:web:a.com?x",
      "plc:x",
      "did:plc:x#y",
    ])
      assert.ok(!isDid(bad), bad);
  } finally {
    if (was !== undefined) process.env.TCM_ATPROTO_LOCAL = was;
  }
}

uses