summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohannes Schleifenbaum <johannes@js-webcoding.de>2021-05-30 17:32:41 +0200
committerJohannes Schleifenbaum <johannes@js-webcoding.de>2021-09-21 09:22:47 +0200
commitc4d18b307115989c4198b2a0795f6367194ae513 (patch)
tree4a738f2da51e84e0548139e15204033818e6b3db
parentb8448def21e5c02728548a5a50236c0e4b5ba80d (diff)
downloadnixpkgs-c4d18b307115989c4198b2a0795f6367194ae513.tar
nixpkgs-c4d18b307115989c4198b2a0795f6367194ae513.tar.gz
nixpkgs-c4d18b307115989c4198b2a0795f6367194ae513.tar.bz2
nixpkgs-c4d18b307115989c4198b2a0795f6367194ae513.tar.lz
nixpkgs-c4d18b307115989c4198b2a0795f6367194ae513.tar.xz
nixpkgs-c4d18b307115989c4198b2a0795f6367194ae513.tar.zst
nixpkgs-c4d18b307115989c4198b2a0795f6367194ae513.zip
nixos/pantalaimon: add test
Co-authored-by: sumnerevans <me@sumnerevans.com>
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/matrix/pantalaimon.nix65
-rw-r--r--pkgs/applications/networking/instant-messengers/pantalaimon/default.nix6
3 files changed, 71 insertions, 1 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 325caba07ea..579f89e03d2 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -336,6 +336,7 @@ in
   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 {};
diff --git a/nixos/tests/matrix/pantalaimon.nix b/nixos/tests/matrix/pantalaimon.nix
new file mode 100644
index 00000000000..fcb9904b213
--- /dev/null
+++ b/nixos/tests/matrix/pantalaimon.nix
@@ -0,0 +1,65 @@
+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/"
+      )
+    '';
+  }
+)
diff --git a/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix b/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
index 153819fc841..9722d3b89e3 100644
--- a/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
+++ b/pkgs/applications/networking/instant-messengers/pantalaimon/default.nix
@@ -1,7 +1,7 @@
 { 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,
 
@@ -63,6 +63,10 @@ buildPythonApplication rec {
     installManPage docs/man/*.[1-9]
   '';
 
+  passthru.tests = {
+    inherit (nixosTests) pantalaimon;
+  };
+
   meta = with lib; {
     description = "An end-to-end encryption aware Matrix reverse proxy daemon";
     homepage = "https://github.com/matrix-org/pantalaimon";