diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 06b2b1179c46..b1ca7bbcbcdf 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -294,6 +294,7 @@ in { curl-impersonate = handleTest ./curl-impersonate.nix {}; custom-ca = handleTest ./custom-ca.nix {}; croc = handleTest ./croc.nix {}; + cross-seed = runTest ./cross-seed.nix; cyrus-imap = runTest ./cyrus-imap.nix; darling = handleTest ./darling.nix {}; darling-dmg = runTest ./darling-dmg.nix; diff --git a/nixos/tests/cross-seed.nix b/nixos/tests/cross-seed.nix new file mode 100644 index 000000000000..c5721e7bc7b8 --- /dev/null +++ b/nixos/tests/cross-seed.nix @@ -0,0 +1,43 @@ +{ lib, ... }: +let + apiKey = "twentyfourcharacterskey!"; +in +{ + name = "cross-seed"; + meta.maintainers = with lib.maintainers; [ pta2002 ]; + + nodes.machine = + { pkgs, config, ... }: + let + cfg = config.services.cross-seed; + in + { + systemd.tmpfiles.settings."0-cross-seed-test"."${cfg.settings.torrentDir}".d = { + inherit (cfg) user group; + mode = "700"; + }; + + services.cross-seed = { + enable = true; + settings = { + torrentDir = "/var/lib/torrents"; + torznab = [ ]; + useClientTorrents = false; + }; + # # We create this secret in the Nix store (making it readable by everyone). + # # DO NOT DO THIS OUTSIDE OF TESTS!! + settingsFile = (pkgs.formats.json { }).generate "secrets.json" { + inherit apiKey; + }; + }; + }; + + testScript = # python + '' + start_all() + machine.wait_for_unit("cross-seed.service") + machine.wait_for_open_port(2468) + # Check that the API is running + machine.succeed("curl --fail http://localhost:2468/api/ping?apiKey=${apiKey}") + ''; +} diff --git a/pkgs/by-name/cr/cross-seed/package.nix b/pkgs/by-name/cr/cross-seed/package.nix index 2f328a72e212..f5abb0347bf0 100644 --- a/pkgs/by-name/cr/cross-seed/package.nix +++ b/pkgs/by-name/cr/cross-seed/package.nix @@ -3,6 +3,7 @@ buildNpmPackage, fetchFromGitHub, nix-update-script, + nixosTests, }: buildNpmPackage rec { @@ -18,7 +19,10 @@ buildNpmPackage rec { npmDepsHash = "sha256-hSiGnw3Fo//oTONBmtuv0sDvldCzs1PsdImxdGWEpMo="; - passthru.updateScript = nix-update-script; + passthru = { + updateScript = nix-update-script; + tests.cross-seed = nixosTests.cross-seed; + }; meta = { description = "Fully-automatic torrent cross-seeding with Torznab";