diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 837bdc7e9fdda0..3d76569e4849cb 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -804,6 +804,7 @@ in { parsedmarc = handleTest ./parsedmarc {}; password-option-override-ordering = handleTest ./password-option-override-ordering.nix {}; pdns-recursor = handleTest ./pdns-recursor.nix {}; + pds = handleTest ./pds.nix {}; peerflix = handleTest ./peerflix.nix {}; peering-manager = handleTest ./web-apps/peering-manager.nix {}; peertube = handleTestOn ["x86_64-linux"] ./web-apps/peertube.nix {}; diff --git a/nixos/tests/pds.nix b/nixos/tests/pds.nix new file mode 100644 index 00000000000000..4c4ab2a64326dd --- /dev/null +++ b/nixos/tests/pds.nix @@ -0,0 +1,29 @@ +import ./make-test-python.nix ( + { lib, ... }: + { + name = "PDS"; + + nodes.machine = { + services.pds = { + enable = true; + settings = { + PDS_PORT = 3000; + PDS_HOSTNAME = "example.com"; + + # Snake oil testing credentials + PDS_JWT_SECRET = "7b93fee53be046bf59c27a32a0fb2069"; + PDS_ADMIN_PASSWORD = "3a4077bc0d5f04eca945ef0509f7e809"; + PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX = "ae4f5028d04c833ba630f29debd5ff80b7700e43e9f4bf70f729a88cd6a6ce35"; + }; + }; + }; + + testScript = '' + machine.wait_for_unit("pds.service") + machine.wait_for_open_port(3000) + machine.succeed("curl --fail http://localhost:3000") + ''; + + meta.maintainers = with lib.maintainers; [ t4ccer ]; + } +) diff --git a/pkgs/by-name/pd/pds/package.nix b/pkgs/by-name/pd/pds/package.nix index ad6b5371f55648..8dfca8215acd7b 100644 --- a/pkgs/by-name/pd/pds/package.nix +++ b/pkgs/by-name/pd/pds/package.nix @@ -9,6 +9,7 @@ nodejs, vips, pkg-config, + nixosTests, lib, }: @@ -78,6 +79,10 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; + passthru.tests = { + inherit (nixosTests) pds; + }; + meta = { description = "Bluesky Personal Data Server (PDS)"; homepage = "https://github.com/bluesky-social/pds";