summary refs log tree commit diff
path: root/nixos/tests
diff options
context:
space:
mode:
authorPavel Borzenkov <pavel@borzenkov.net>2021-02-23 14:23:20 +0300
committerPavel Borzenkov <pavel@borzenkov.net>2021-03-27 14:43:33 +0300
commit58ce51ed06ee90e7abca64ebd0b88be0434b5431 (patch)
treeca97c8b68696dac09b948cce51be77b336fc1b48 /nixos/tests
parentf069cdb0dce80bb91055d94cca5c0a21b48b7fcd (diff)
downloadnixpkgs-58ce51ed06ee90e7abca64ebd0b88be0434b5431.tar
nixpkgs-58ce51ed06ee90e7abca64ebd0b88be0434b5431.tar.gz
nixpkgs-58ce51ed06ee90e7abca64ebd0b88be0434b5431.tar.bz2
nixpkgs-58ce51ed06ee90e7abca64ebd0b88be0434b5431.tar.lz
nixpkgs-58ce51ed06ee90e7abca64ebd0b88be0434b5431.tar.xz
nixpkgs-58ce51ed06ee90e7abca64ebd0b88be0434b5431.tar.zst
nixpkgs-58ce51ed06ee90e7abca64ebd0b88be0434b5431.zip
nixos/calibre-web: init module
Diffstat (limited to 'nixos/tests')
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/calibre-web.nix53
2 files changed, 54 insertions, 0 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 3ce71b0abe6..45c296a27db 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -49,6 +49,7 @@ in
   cadvisor = handleTestOn ["x86_64-linux"] ./cadvisor.nix {};
   cage = handleTest ./cage.nix {};
   cagebreak = handleTest ./cagebreak.nix {};
+  calibre-web = handleTest ./calibre-web.nix {};
   cassandra_2_1 = handleTest ./cassandra.nix { testPackage = pkgs.cassandra_2_1; };
   cassandra_2_2 = handleTest ./cassandra.nix { testPackage = pkgs.cassandra_2_2; };
   cassandra_3_0 = handleTest ./cassandra.nix { testPackage = pkgs.cassandra_3_0; };
diff --git a/nixos/tests/calibre-web.nix b/nixos/tests/calibre-web.nix
new file mode 100644
index 00000000000..4f73b331112
--- /dev/null
+++ b/nixos/tests/calibre-web.nix
@@ -0,0 +1,53 @@
+import ./make-test-python.nix (
+  { pkgs, lib, ... }:
+
+    let
+      port = 3142;
+      defaultPort = 8083;
+    in
+      with lib;
+      {
+        name = "calibre-web";
+        meta.maintainers = with pkgs.lib.maintainers; [ pborzenkov ];
+
+        nodes = {
+          default = { ... }: {
+            services.calibre-web.enable = true;
+          };
+
+          customized = { pkgs, ... }: {
+            services.calibre-web = {
+              enable = true;
+              listen.port = port;
+              options = {
+                calibreLibrary = "/tmp/books";
+                reverseProxyAuth = {
+                  enable = true;
+                  header = "X-User";
+                };
+              };
+            };
+            environment.systemPackages = [ pkgs.calibre ];
+          };
+        };
+        testScript = ''
+          start_all()
+
+          default.wait_for_unit("calibre-web.service")
+          default.wait_for_open_port(${toString defaultPort})
+          default.succeed(
+              "curl --fail 'http://localhost:${toString defaultPort}/basicconfig' | grep -q 'Basic Configuration'"
+          )
+
+          customized.succeed(
+              "mkdir /tmp/books && calibredb --library-path /tmp/books add -e --title test-book"
+          )
+          customized.succeed("systemctl restart calibre-web")
+          customized.wait_for_unit("calibre-web.service")
+          customized.wait_for_open_port(${toString port})
+          customized.succeed(
+              "curl --fail -H X-User:admin 'http://localhost:${toString port}' | grep -q test-book"
+          )
+        '';
+      }
+)