nixpkgs-suyu/nixos/tests/plausible.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

53 lines
1.6 KiB
Nix
Raw Normal View History

2021-05-21 23:15:23 +02:00
import ./make-test-python.nix ({ pkgs, lib, ... }: {
name = "plausible";
2021-06-01 17:59:59 +02:00
meta = with lib.maintainers; {
maintainers = [ ];
2021-05-21 23:15:23 +02:00
};
2022-03-21 00:15:30 +01:00
nodes.machine = { pkgs, ... }: {
2021-05-21 23:15:23 +02:00
virtualisation.memorySize = 4096;
services.plausible = {
enable = true;
adminUser = {
email = "admin@example.org";
passwordFile = "${pkgs.writeText "pwd" "foobar"}";
activate = true;
};
server = {
baseUrl = "http://localhost:8000";
secretKeybaseFile = "${pkgs.writeText "dont-try-this-at-home" "nannannannannannannannannannannannannannannannannannannan_batman!"}";
};
};
};
testScript = ''
start_all()
machine.wait_for_unit("plausible.service")
machine.wait_for_open_port(8000)
# Ensure that the software does not make not make the machine
# listen on any public interfaces by default.
machine.fail("ss -tlpn 'src = 0.0.0.0 or src = [::]' | grep LISTEN")
2021-05-21 23:15:23 +02:00
machine.succeed("curl -f localhost:8000 >&2")
2023-09-20 03:42:16 +02:00
machine.succeed("curl -f localhost:8000/js/script.js >&2")
2021-05-21 23:15:23 +02:00
csrf_token = machine.succeed(
"curl -c /tmp/cookies localhost:8000/login | grep '_csrf_token' | sed -E 's,.*value=\"(.*)\".*,\\1,g'"
)
machine.succeed(
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"
)
# By ensuring that the user is redirected to the dashboard after login, we
# also make sure that the automatic verification of the module works.
machine.succeed(
"[[ $(grep 'location: ' headers | cut -d: -f2- | xargs echo) == /sites* ]]"
)
machine.shutdown()
'';
})