1import ./make-test-python.nix (
2 { pkgs, ... }:
3 {
4 name = "deluge";
5 meta = with pkgs.lib.maintainers; {
6 maintainers = [ flokli ];
7 };
8
9 nodes = {
10 simple = {
11 services.deluge = {
12 enable = true;
13 package = pkgs.deluge-2_x;
14 web = {
15 enable = true;
16 openFirewall = true;
17 };
18 };
19 };
20
21 declarative = {
22 services.deluge = {
23 enable = true;
24 package = pkgs.deluge-2_x;
25 openFirewall = true;
26 declarative = true;
27 config = {
28 allow_remote = true;
29 download_location = "/var/lib/deluge/my-download";
30 daemon_port = 58846;
31 listen_ports = [
32 6881
33 6889
34 ];
35 };
36 web = {
37 enable = true;
38 port = 3142;
39 };
40 authFile = pkgs.writeText "deluge-auth" ''
41 localclient:a7bef72a890:10
42 andrew:password:10
43 user3:anotherpass:5
44 '';
45 };
46 };
47
48 };
49
50 testScript = ''
51 start_all()
52
53 simple.wait_for_unit("deluged")
54 simple.wait_for_unit("delugeweb")
55 simple.wait_for_open_port(8112)
56 declarative.wait_for_unit("network.target")
57 declarative.wait_until_succeeds("curl --fail http://simple:8112")
58
59 declarative.wait_for_unit("deluged")
60 declarative.wait_for_unit("delugeweb")
61 declarative.wait_until_succeeds("curl --fail http://declarative:3142")
62
63 # deluge-console always exits with 1. https://dev.deluge-torrent.org/ticket/3291
64 declarative.succeed(
65 "(deluge-console 'connect 127.0.0.1:58846 andrew password; help' || true) | grep -q 'rm.*Remove a torrent'"
66 )
67 '';
68 }
69)