nixos/ejabberd: Integrate go-sendxmpp into test

This commit is contained in:
Jonathan Davies 2025-06-28 10:20:03 +00:00
parent 044e1d941f
commit 3676048fb8
No known key found for this signature in database
2 changed files with 48 additions and 3 deletions

View File

@ -2,7 +2,7 @@ let
cert =
pkgs:
pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=example.com/CN=muc.example.com/CN=matrix.example.com' -days 36500
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=example.com/CN=muc.example.com/CN=matrix.example.com' -addext "subjectAltName = DNS:example.com,DNS:muc.example.com,DNS:matrix.example.com" -days 36500
mkdir -p $out
cp key.pem cert.pem $out
'';
@ -14,7 +14,18 @@ in
maintainers = [ ];
};
nodes = {
client =
client-a =
{ nodes, pkgs, ... }:
{
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
networking.extraHosts = ''
${nodes.server.networking.primaryIPAddress} example.com
'';
imports = [ ./go-sendxmpp-listen.nix ];
};
client-b =
{ nodes, pkgs, ... }:
{
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
@ -28,6 +39,7 @@ in
})
];
};
server =
{ config, pkgs, ... }:
{
@ -310,7 +322,18 @@ in
ejabberd_prefix + "register cthon98 example.com nothunter2",
)
server.fail(ejabberd_prefix + "register asdf wrong.domain")
client.succeed("send-message")
for machine in client_a, client_b:
machine.systemctl("start network-online.target")
machine.wait_for_unit("network-online.target")
client_a.wait_for_unit("go-sendxmpp-listen")
client_b.succeed("send-message")
client_a.wait_until_succeeds(
"journalctl -o cat -u go-sendxmpp-listen.service | grep 'cthon98@example.com: Hello, this is dog.'"
)
server.succeed(
ejabberd_prefix + "unregister cthon98 example.com",
ejabberd_prefix + "unregister azurediamond example.com",

View File

@ -0,0 +1,22 @@
{ lib, pkgs, ... }:
{
systemd.services.go-sendxmpp-listen = {
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''
${lib.getExe pkgs.go-sendxmpp} --username azurediamond@example.com --password hunter2 --listen
'';
Environment = [
"HOME=/var/lib/go-sendxmpp/"
];
DynamicUser = true;
Restart = "on-failure";
RestartSec = "5s";
StateDirectory = "go-sendxmpp";
};
};
}