~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/pds.js

An atproto PDS in JavaScript, for Cloudflare Workers and Node

0
0
main
36 lines · 1.3 KB Raw History
import { readFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { describe, expect, it } from 'vitest';
import { PersonalDataServer } from '../packages/core/src/pds.js';

// /xrpc/_health reports a version constant hardcoded in pds.js, because
// @pdsjs/core has to run on Workers and Deno where it cannot import
// package.json. Nothing in the release process edits source, so the constant
// silently went stale — it reported 0.7.0 while the package was 0.8.0. This
// test is what keeps the two together.
describe('reported version', () => {
  it('matches the @pdsjs/core package version', async () => {
    const pkg = JSON.parse(
      readFileSync(
        fileURLToPath(
          new URL('../packages/core/package.json', import.meta.url),
        ),
        'utf8',
      ),
    );

    // _health touches no storage, so the ports can be bare stubs.
    const pds = new PersonalDataServer({
      actorStorage: /** @type {any} */ ({}),
      sharedStorage: /** @type {any} */ ({}),
      blobs: /** @type {any} */ ({}),
      jwtSecret: 'test-secret',
    });

    const response = await pds.fetch(
      new Request('https://pds.example.com/xrpc/_health'),
    );

    expect(await response.json()).toEqual({ version: pkg.version });
  });
});