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