1import ./make-test-python.nix (
2 { pkgs, lib, ... }:
3 let
4 journal = pkgs.writeText "test.journal" ''
5 2010/01/10 Loan
6 assets:cash 500$
7 income:loan -500$
8 2010/01/10 NixOS Foundation donation
9 expenses:donation 250$
10 assets:cash -250$
11 '';
12 in
13 rec {
14 name = "hledger-web";
15 meta.maintainers = with lib.maintainers; [ marijanp ];
16
17 nodes = rec {
18 server =
19 { config, pkgs, ... }:
20 {
21 services.hledger-web = {
22 host = "127.0.0.1";
23 port = 5000;
24 enable = true;
25 allow = "edit";
26 };
27 networking.firewall.allowedTCPPorts = [ config.services.hledger-web.port ];
28 systemd.services.hledger-web.preStart = ''
29 ln -s ${journal} /var/lib/hledger-web/.hledger.journal
30 '';
31 };
32 apiserver =
33 { ... }:
34 {
35 imports = [ server ];
36 services.hledger-web.serveApi = true;
37 };
38 };
39
40 testScript = ''
41 start_all()
42
43 server.wait_for_unit("hledger-web.service")
44 server.wait_for_open_port(5000)
45 with subtest("Check if web UI is accessible"):
46 page = server.succeed("curl -L http://127.0.0.1:5000")
47 assert ".hledger.journal" in page
48
49 apiserver.wait_for_unit("hledger-web.service")
50 apiserver.wait_for_open_port(5000)
51 with subtest("Check if the JSON API is served"):
52 transactions = apiserver.succeed("curl -L http://127.0.0.1:5000/transactions")
53 assert "NixOS Foundation donation" in transactions
54 '';
55 }
56)