nixos/pantalaimon: add test

Co-authored-by: sumnerevans <me@sumnerevans.com>

Changed files
+71 -1
nixos
pkgs
applications
networking
instant-messengers
pantalaimon
+1
nixos/tests/all-tests.nix
···
packagekit = handleTest ./packagekit.nix {};
pam-oath-login = handleTest ./pam-oath-login.nix {};
pam-u2f = handleTest ./pam-u2f.nix {};
+
pantalaimon = handleTest ./matrix/pantalaimon.nix {};
pantheon = handleTest ./pantheon.nix {};
paperless-ng = handleTest ./paperless-ng.nix {};
parsedmarc = handleTest ./parsedmarc {};
+65
nixos/tests/matrix/pantalaimon.nix
···
+
import ../make-test-python.nix (
+
{ pkgs, ... }:
+
let
+
pantalaimonInstanceName = "testing";
+
+
# Set up SSL certs for Synapse to be happy.
+
runWithOpenSSL = file: cmd: pkgs.runCommand file
+
{
+
buildInputs = [ pkgs.openssl ];
+
}
+
cmd;
+
+
ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
+
ca_pem = runWithOpenSSL "ca.pem" ''
+
openssl req \
+
-x509 -new -nodes -key ${ca_key} \
+
-days 10000 -out $out -subj "/CN=snakeoil-ca"
+
'';
+
key = runWithOpenSSL "matrix_key.pem" "openssl genrsa -out $out 2048";
+
csr = runWithOpenSSL "matrix.csr" ''
+
openssl req \
+
-new -key ${key} \
+
-out $out -subj "/CN=localhost" \
+
'';
+
cert = runWithOpenSSL "matrix_cert.pem" ''
+
openssl x509 \
+
-req -in ${csr} \
+
-CA ${ca_pem} -CAkey ${ca_key} \
+
-CAcreateserial -out $out \
+
-days 365
+
'';
+
in
+
{
+
name = "pantalaimon";
+
meta = with pkgs.lib; {
+
maintainers = teams.matrix.members;
+
};
+
+
machine = { pkgs, ... }: {
+
services.pantalaimon-headless.instances.${pantalaimonInstanceName} = {
+
homeserver = "https://localhost:8448";
+
listenAddress = "0.0.0.0";
+
listenPort = 8888;
+
logLevel = "debug";
+
ssl = false;
+
};
+
+
services.matrix-synapse = {
+
enable = true;
+
database_type = "sqlite3";
+
tls_certificate_path = "${cert}";
+
tls_private_key_path = "${key}";
+
};
+
};
+
+
testScript = ''
+
start_all()
+
machine.wait_for_unit("pantalaimon-${pantalaimonInstanceName}.service")
+
machine.wait_for_unit("matrix-synapse.service")
+
machine.wait_until_succeeds(
+
"curl --fail -L http://localhost:8888/"
+
)
+
'';
+
}
+
)
+5 -1
pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
···
{ lib, stdenv, buildPythonApplication, fetchFromGitHub, pythonOlder,
attrs, aiohttp, appdirs, click, keyring, Logbook, peewee, janus,
prompt-toolkit, matrix-nio, dbus-python, pydbus, notify2, pygobject3,
-
setuptools, installShellFiles,
+
setuptools, installShellFiles, nixosTests,
pytest, faker, pytest-aiohttp, aioresponses,
···
postInstall = ''
installManPage docs/man/*.[1-9]
'';
+
+
passthru.tests = {
+
inherit (nixosTests) pantalaimon;
+
};
meta = with lib; {
description = "An end-to-end encryption aware Matrix reverse proxy daemon";