3d9c3e5cfd
The `-q` flag makes grep close the pipe early, which curl doesn't handle gracefully, but exits with an error like "(23) Failed writing body".
70 lines
2.6 KiB
Nix
70 lines
2.6 KiB
Nix
import ./make-test-python.nix (
|
|
{ pkgs, lib, ... }:
|
|
|
|
{
|
|
name = "xandikos";
|
|
|
|
meta.maintainers = with 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-prefix/";
|
|
services.xandikos.extraOptions = [
|
|
"--defaults"
|
|
];
|
|
services.nginx = {
|
|
enable = true;
|
|
recommendedProxySettings = true;
|
|
virtualHosts."xandikos" = {
|
|
serverName = "xandikos.local";
|
|
basicAuth.xandikos = "snakeOilPassword";
|
|
locations."/xandikos/" = {
|
|
proxyPass = "http://localhost:8080/xandikos-prefix/";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
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 -i 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 -i 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 -i Xandikos"
|
|
)
|
|
xandikos_client.succeed(
|
|
"curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/user/ | grep -i Xandikos"
|
|
)
|
|
'';
|
|
}
|
|
)
|