python3Packages.xknx: 1.1.0 -> 1.2.0
[NixPkgs.git] / nixos / tests / plausible.nix
blobab91e08beb3490951df02a9fec6f7c76105736f5
1 import ./make-test-python.nix ({ pkgs, lib, ... }: {
2   name = "plausible";
3   meta = with lib.maintainers; {
4     maintainers = [ ma27 ];
5   };
7   nodes.machine = { pkgs, ... }: {
8     virtualisation.memorySize = 4096;
9     services.plausible = {
10       enable = true;
11       releaseCookiePath = "${pkgs.runCommand "cookie" { } ''
12         ${pkgs.openssl}/bin/openssl rand -base64 64 >"$out"
13       ''}";
14       adminUser = {
15         email = "admin@example.org";
16         passwordFile = "${pkgs.writeText "pwd" "foobar"}";
17         activate = true;
18       };
19       server = {
20         baseUrl = "http://localhost:8000";
21         secretKeybaseFile = "${pkgs.writeText "dont-try-this-at-home" "nannannannannannannannannannannannannannannannannannannan_batman!"}";
22       };
23     };
24   };
26   testScript = ''
27     start_all()
28     machine.wait_for_unit("plausible.service")
29     machine.wait_for_open_port(8000)
31     machine.succeed("curl -f localhost:8000 >&2")
33     csrf_token = machine.succeed(
34         "curl -c /tmp/cookies localhost:8000/login | grep '_csrf_token' | sed -E 's,.*value=\"(.*)\".*,\\1,g'"
35     )
37     machine.succeed(
38         f"curl -b /tmp/cookies -f -X POST localhost:8000/login -F email=admin@example.org -F password=foobar -F _csrf_token={csrf_token.strip()} -D headers"
39     )
41     # By ensuring that the user is redirected to the dashboard after login, we
42     # also make sure that the automatic verification of the module works.
43     machine.succeed(
44         "[[ $(grep 'location: ' headers | cut -d: -f2- | xargs echo) == /sites* ]]"
45     )
47     machine.shutdown()
48   '';