summary refs log tree commit diff
path: root/nixos/tests/hledger-web.nix
blob: f8919f7d4bd06c11c3843c74789e9863240e1c7f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import ./make-test-python.nix ({ pkgs, lib, ... }:
let
  journal = pkgs.writeText "test.journal" ''
    2010/01/10 Loan
        assets:cash                 500$
        income:loan                -500$
    2010/01/10 NixOS Foundation donation
        expenses:donation           250$
        assets:cash                -250$
  '';
in
rec {
  name = "hledger-web";
  meta.maintainers = with lib.maintainers; [ marijanp ];

  nodes = rec {
    server = { config, pkgs, ... }: {
      services.hledger-web = {
        host = "127.0.0.1";
        port = 5000;
        enable = true;
        capabilities.manage = true;
      };
      networking.firewall.allowedTCPPorts = [ config.services.hledger-web.port ];
      systemd.services.hledger-web.preStart = ''
        ln -s ${journal} /var/lib/hledger-web/.hledger.journal
      '';
    };
    apiserver = { ... }: {
      imports = [ server ];
      services.hledger-web.serveApi = true;
    };
  };

  testScript = ''
    start_all()

    server.wait_for_unit("hledger-web.service")
    server.wait_for_open_port(5000)
    with subtest("Check if web UI is accessible"):
        page = server.succeed("curl -L http://127.0.0.1:5000")
        assert ".hledger.journal" in page

    apiserver.wait_for_unit("hledger-web.service")
    apiserver.wait_for_open_port(5000)
    with subtest("Check if the JSON API is served"):
        transactions = apiserver.succeed("curl -L http://127.0.0.1:5000/transactions")
        assert "NixOS Foundation donation" in transactions
  '';
})