python313Packages.tencentcloud-sdk-python: 3.0.1312 -> 3.0.1313 (#379931)
[NixPkgs.git] / nixos / tests / hledger-web.nix
blobfcb3c7f656aa3513f0a4315f8a50a121fee2b187
1 import ./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 ];
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     };
40     testScript = ''
41       start_all()
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
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   }