1import ./make-test-python.nix (
2 let
3 host = "127.0.0.1";
4 port = 1234;
5 dataDir = "/stash";
6 in
7 { pkgs, ... }:
8 {
9 name = "stash";
10 meta.maintainers = pkgs.stash.meta.maintainers;
11
12 nodes.machine = {
13 services.stash = {
14 inherit dataDir;
15 enable = true;
16
17 username = "test";
18 passwordFile = pkgs.writeText "stash-password" "MyPassword";
19
20 jwtSecretKeyFile = pkgs.writeText "jwt_secret_key" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
21 sessionStoreKeyFile = pkgs.writeText "session_store_key" "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
22
23 plugins =
24 let
25 src = pkgs.fetchFromGitHub {
26 owner = "stashapp";
27 repo = "CommunityScripts";
28 rev = "9b6fac4934c2fac2ef0859ea68ebee5111fc5be5";
29 hash = "sha256-PO3J15vaA7SD4r/LyHlXjnpaeYAN9Q++O94bIWdz7OA=";
30 };
31 in
32 [
33 (pkgs.runCommand "stashNotes" { inherit src; } ''
34 mkdir -p $out/plugins
35 cp -r $src/plugins/stashNotes $out/plugins/stashNotes
36 '')
37 (pkgs.runCommand "Theme-Plex" { inherit src; } ''
38 mkdir -p $out/plugins
39 cp -r $src/themes/Theme-Plex $out/plugins/Theme-Plex
40 '')
41 ];
42
43 mutableScrapers = true;
44 scrapers =
45 let
46 src = pkgs.fetchFromGitHub {
47 owner = "stashapp";
48 repo = "CommunityScrapers";
49 rev = "2ece82d17ddb0952c16842b0775274bcda598d81";
50 hash = "sha256-AEmnvM8Nikhue9LNF9dkbleYgabCvjKHtzFpMse4otM=";
51 };
52 in
53 [
54 (pkgs.runCommand "FTV" { inherit src; } ''
55 mkdir -p $out/scrapers/FTV
56 cp -r $src/scrapers/FTV.yml $out/scrapers/FTV
57 '')
58 ];
59
60 settings = {
61 inherit host port;
62
63 stash = [ { path = "/srv"; } ];
64 };
65 };
66 };
67
68 testScript = ''
69 machine.wait_for_unit("stash.service")
70 machine.wait_for_open_port(${toString port}, "${host}")
71 machine.succeed("curl --fail http://${host}:${toString port}/")
72
73 with subtest("Test plugins/scrapers"):
74 with subtest("mutable plugins directory should not exist"):
75 machine.fail("test -d ${dataDir}/plugins")
76 with subtest("mutable scrapers directory should exist and scraper FTV should be linked"):
77 machine.succeed("test -L ${dataDir}/scrapers/FTV")
78 '';
79 }
80)