2021-05-21 22:15:23 +01:00
|
|
|
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|
|
|
name = "plausible";
|
2021-06-01 16:59:59 +01:00
|
|
|
meta = with lib.maintainers; {
|
2021-05-21 22:15:23 +01:00
|
|
|
maintainers = [ ma27 ];
|
|
|
|
};
|
|
|
|
|
2022-03-20 23:15:30 +00:00
|
|
|
nodes.machine = { pkgs, ... }: {
|
2021-05-21 22:15:23 +01:00
|
|
|
virtualisation.memorySize = 4096;
|
|
|
|
services.plausible = {
|
|
|
|
enable = true;
|
2022-01-25 16:19:49 +00:00
|
|
|
releaseCookiePath = "${pkgs.runCommand "cookie" { } ''
|
|
|
|
${pkgs.openssl}/bin/openssl rand -base64 64 >"$out"
|
|
|
|
''}";
|
2021-05-21 22:15:23 +01:00
|
|
|
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)
|
|
|
|
|
|
|
|
machine.succeed("curl -f localhost:8000 >&2")
|
|
|
|
|
2023-09-20 02:42:16 +01:00
|
|
|
machine.succeed("curl -f localhost:8000/js/script.js >&2")
|
|
|
|
|
2021-05-21 22:15:23 +01: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()
|
|
|
|
'';
|
|
|
|
})
|