nixpkgs/nixos/tests/ntfy-sh.nix

43 lines
1.3 KiB
Nix

import ./make-test-python.nix (
{ pkgs, ... }:
{
name = "ntfy-sh";
nodes.machine =
{ ... }:
{
services.ntfy-sh.enable = true;
services.ntfy-sh.settings.base-url = "http://localhost:2586";
# Create a user with user:123
services.ntfy-sh.environmentFile = pkgs.writeText "ntfy.env" ''
NTFY_AUTH_DEFAULT_ACCESS='deny-all'
NTFY_AUTH_USERS='user:$2a$12$W2v7IQhkayvJOYRpg6YEruxj.jUO3R2xQOU7s1vC3HzLLB9gSKJ9.:user'
NTFY_AUTH_ACCESS='user:test:rw'
'';
};
testScript = ''
import json
msg = "Test notification"
machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(2586)
machine.succeed(f"curl -u user:1234 -d '{msg}' localhost:2586/test")
# If we have a user, receive a message
notif = json.loads(machine.succeed("curl -u user:1234 -s localhost:2586/test/json?poll=1"))
assert msg == notif["message"], "Wrong message"
# If we have no user, we should get forbidden, making sure the default access config works
notif = json.loads(machine.succeed("curl -s localhost:2586/test/json?poll=1"))
assert 403 == notif["http"], f"Should return 403, got {notif["http"]}"
machine.succeed("ntfy user list")
'';
}
)