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" ) ''; } )