about summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorBrian Olsen <brian@maven-group.org>2018-02-02 01:35:32 +0100
committerBrian Olsen <brian@maven-group.org>2018-02-03 20:07:15 +0100
commit27ee0b9099e8c27d3a09de3e8489bce43f8e7624 (patch)
tree0ed3df7ea844037ccf09769c1d4873b7a8fbf007 /nixos
parent3d74ccf5e8f9d6ac32a3104a1598203c008dc227 (diff)
downloadnixlib-27ee0b9099e8c27d3a09de3e8489bce43f8e7624.tar
nixlib-27ee0b9099e8c27d3a09de3e8489bce43f8e7624.tar.gz
nixlib-27ee0b9099e8c27d3a09de3e8489bce43f8e7624.tar.bz2
nixlib-27ee0b9099e8c27d3a09de3e8489bce43f8e7624.tar.lz
nixlib-27ee0b9099e8c27d3a09de3e8489bce43f8e7624.tar.xz
nixlib-27ee0b9099e8c27d3a09de3e8489bce43f8e7624.tar.zst
nixlib-27ee0b9099e8c27d3a09de3e8489bce43f8e7624.zip
nixos/tests: add basic tests for services.rspamd
Diffstat (limited to 'nixos')
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/rspamd.nix63
2 files changed, 64 insertions, 0 deletions
diff --git a/nixos/release.nix b/nixos/release.nix
index a396eaac9a3e..e443e423b1ad 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -332,6 +332,7 @@ in rec {
   # tests.quagga = callTest tests/quagga.nix {};
   tests.quake3 = callTest tests/quake3.nix {};
   tests.radicale = callTest tests/radicale.nix {};
+  tests.rspamd = callSubTests tests/rspamd.nix {};
   tests.runInMachine = callTest tests/run-in-machine.nix {};
   tests.samba = callTest tests/samba.nix {};
   tests.sddm = callSubTests tests/sddm.nix {};
diff --git a/nixos/tests/rspamd.nix b/nixos/tests/rspamd.nix
new file mode 100644
index 000000000000..35e534246b65
--- /dev/null
+++ b/nixos/tests/rspamd.nix
@@ -0,0 +1,63 @@
+{ system ? builtins.currentSystem }:
+with import ../lib/testing.nix { inherit system; };
+with pkgs.lib;
+let
+  initMachine = ''
+    startAll
+    $machine->waitForUnit("rspamd.service");
+    $machine->succeed("id \"rspamd\" >/dev/null");
+  '';
+  checkSocket = socket: user: group: mode: ''
+    $machine->succeed("ls ${socket} >/dev/null");
+    $machine->succeed("[[ \"\$(stat -c %U ${socket})\" == \"${user}\" ]]");
+    $machine->succeed("[[ \"\$(stat -c %G ${socket})\" == \"${group}\" ]]");
+    $machine->succeed("[[ \"\$(stat -c %a ${socket})\" == \"${mode}\" ]]");
+  '';
+  simple = name: enableIPv6: makeTest {
+    name = "rspamd-${name}";
+    machine = {
+      services.rspamd = {
+        enable = true;
+      };
+      networking.enableIPv6 = enableIPv6;
+    };
+    testScript = ''
+      startAll
+      $machine->waitForUnit("multi-user.target");
+      $machine->waitForOpenPort(11334);
+      $machine->waitForUnit("rspamd.service");
+      $machine->succeed("id \"rspamd\" >/dev/null");
+      ${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
+      sleep 10;
+      $machine->log($machine->succeed("systemctl cat rspamd.service"));
+      $machine->log($machine->succeed("curl http://localhost:11334/auth"));
+      $machine->log($machine->succeed("curl http://127.0.0.1:11334/auth"));
+      ${optionalString enableIPv6 ''
+        $machine->log($machine->succeed("curl http://[::1]:11334/auth"));
+      ''}
+    '';
+  };
+in
+{
+  simple = simple "simple" true;
+  ipv4only = simple "ipv4only" false;
+  bindports = makeTest {
+    name = "rspamd-bindports";
+    machine = {
+      services.rspamd = {
+        enable = true;
+        bindSocket = [ "/run/rspamd.sock mode=0600 user=root group=root" ];
+        bindUISocket = [ "/run/rspamd-worker.sock mode=0666 user=root group=root" ];
+      };
+    };
+
+    testScript = ''
+      ${initMachine}
+      $machine->waitForFile("/run/rspamd.sock");
+      ${checkSocket "/run/rspamd.sock" "root" "root" "600" }
+      ${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" }
+      $machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat"));
+      $machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping"));
+    '';
+  };
+}