1import ./make-test-python.nix (
2 { ... }:
3 {
4 name = "taskchampion-sync-server";
5
6 nodes = {
7 server = {
8 services.taskchampion-sync-server.enable = true;
9 services.taskchampion-sync-server.host = "0.0.0.0";
10 services.taskchampion-sync-server.openFirewall = true;
11 };
12 client =
13 { pkgs, ... }:
14 {
15 environment.systemPackages = [ pkgs.taskwarrior3 ];
16 };
17 };
18 testScript =
19 { nodes, ... }:
20 let
21 cfg = nodes.server.services.taskchampion-sync-server;
22 port = builtins.toString cfg.port;
23 # Generated with uuidgen
24 uuid = "bf01376e-04a4-435a-9263-608567531af3";
25 password = "nixos-test";
26 in
27 ''
28 # Explicitly start the VMs so that we don't accidentally start newServer
29 server.start()
30 client.start()
31
32 server.wait_for_unit("taskchampion-sync-server.service")
33 server.wait_for_open_port(${port})
34
35 # See man task-sync(5)
36 client.succeed("mkdir ~/.task")
37 client.succeed("touch ~/.taskrc")
38 client.succeed("echo sync.server.origin=http://server:${port} >> ~/.taskrc")
39 client.succeed("echo sync.server.client_id=${uuid} >> ~/.taskrc")
40 client.succeed("echo sync.encryption_secret=${password} >> ~/.taskrc")
41 client.succeed("task add hello world")
42 client.succeed("task sync")
43
44 # Useful for debugging
45 client.copy_from_vm("/root/.task", "client")
46 server.copy_from_vm("${cfg.dataDir}", "server")
47 '';
48 }
49)