summary refs log tree commit diff
path: root/nixos/tests/xandikos.nix
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2020-01-14 10:20:32 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2020-01-14 10:20:32 +0100
commit05962c4ad558b6802e64e8992aebf2dfc946d34e (patch)
tree0fa0c4fd8cd03ca60fe09bd5816864281cbe8d39 /nixos/tests/xandikos.nix
parented1b0d0bac6438fbfcb2dca77493edcbe3384114 (diff)
parentec2ed2d316d850061ffa75a43f487928b0d7e7c3 (diff)
downloadnixpkgs-05962c4ad558b6802e64e8992aebf2dfc946d34e.tar
nixpkgs-05962c4ad558b6802e64e8992aebf2dfc946d34e.tar.gz
nixpkgs-05962c4ad558b6802e64e8992aebf2dfc946d34e.tar.bz2
nixpkgs-05962c4ad558b6802e64e8992aebf2dfc946d34e.tar.lz
nixpkgs-05962c4ad558b6802e64e8992aebf2dfc946d34e.tar.xz
nixpkgs-05962c4ad558b6802e64e8992aebf2dfc946d34e.tar.zst
nixpkgs-05962c4ad558b6802e64e8992aebf2dfc946d34e.zip
Merge master into staging-next
Diffstat (limited to 'nixos/tests/xandikos.nix')
-rw-r--r--nixos/tests/xandikos.nix70
1 files changed, 70 insertions, 0 deletions
diff --git a/nixos/tests/xandikos.nix b/nixos/tests/xandikos.nix
new file mode 100644
index 00000000000..0fded20ff1a
--- /dev/null
+++ b/nixos/tests/xandikos.nix
@@ -0,0 +1,70 @@
+import ./make-test-python.nix (
+  { pkgs, lib, ... }:
+
+    {
+      name = "xandikos";
+
+      meta.maintainers = [ lib.maintainers."0x4A6F" ];
+
+      nodes = {
+        xandikos_client = {};
+        xandikos_default = {
+          networking.firewall.allowedTCPPorts = [ 8080 ];
+          services.xandikos.enable = true;
+        };
+        xandikos_proxy = {
+          networking.firewall.allowedTCPPorts = [ 80 8080 ];
+          services.xandikos.enable = true;
+          services.xandikos.address = "localhost";
+          services.xandikos.port = 8080;
+          services.xandikos.routePrefix = "/xandikos/";
+          services.xandikos.extraOptions = [
+            "--defaults"
+          ];
+          services.nginx = {
+            enable = true;
+            recommendedProxySettings = true;
+            virtualHosts."xandikos" = {
+              serverName = "xandikos.local";
+              basicAuth.xandikos = "snakeOilPassword";
+              locations."/xandikos/" = {
+                proxyPass = "http://localhost:8080/";
+              };
+            };
+          };
+        };
+      };
+
+      testScript = ''
+        start_all()
+
+        with subtest("Xandikos default"):
+            xandikos_default.wait_for_unit("multi-user.target")
+            xandikos_default.wait_for_unit("xandikos.service")
+            xandikos_default.wait_for_open_port(8080)
+            xandikos_default.succeed("curl --fail http://localhost:8080/")
+            xandikos_default.succeed(
+                "curl -s --fail --location http://localhost:8080/ | grep -qi Xandikos"
+            )
+            xandikos_client.wait_for_unit("network.target")
+            xandikos_client.fail("curl --fail http://xandikos_default:8080/")
+
+        with subtest("Xandikos proxy"):
+            xandikos_proxy.wait_for_unit("multi-user.target")
+            xandikos_proxy.wait_for_unit("xandikos.service")
+            xandikos_proxy.wait_for_open_port(8080)
+            xandikos_proxy.succeed("curl --fail http://localhost:8080/")
+            xandikos_proxy.succeed(
+                "curl -s --fail --location http://localhost:8080/ | grep -qi Xandikos"
+            )
+            xandikos_client.wait_for_unit("network.target")
+            xandikos_client.fail("curl --fail http://xandikos_proxy:8080/")
+            xandikos_client.succeed(
+                "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/ | grep -qi Xandikos"
+            )
+            xandikos_client.succeed(
+                "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/user/ | grep -qi Xandikos"
+            )
+      '';
+    }
+)