2021-02-23 14:23:20 +03:00
|
|
|
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(
|
2021-06-05 16:50:58 +03:00
|
|
|
"curl --fail 'http://localhost:${toString defaultPort}/basicconfig' | grep 'Basic Configuration'"
|
2021-02-23 14:23:20 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
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(
|
2021-06-05 16:50:58 +03:00
|
|
|
"curl --fail -H X-User:admin 'http://localhost:${toString port}' | grep test-book"
|
2021-02-23 14:23:20 +03:00
|
|
|
)
|
|
|
|
'';
|
|
|
|
}
|
|
|
|
)
|