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