nixpkgs/nixos/tests/sing-box.nix

48 lines
1.3 KiB
Nix

import ./make-test-python.nix ({ lib, pkgs, ... }: {
name = "sing-box";
meta = {
maintainers = with lib.maintainers; [ nickcao ];
};
nodes.machine = { pkgs, ... }: {
environment.systemPackages = [ pkgs.curl ];
services.nginx = {
enable = true;
statusPage = true;
};
services.sing-box = {
enable = true;
settings = {
inbounds = [{
type = "mixed";
tag = "inbound";
listen = "127.0.0.1";
listen_port = 1080;
users = [{
username = "user";
password = { _secret = pkgs.writeText "password" "supersecret"; };
}];
}];
outbounds = [{
type = "direct";
tag = "outbound";
}];
};
};
};
testScript = ''
machine.wait_for_unit("nginx.service")
machine.wait_for_unit("sing-box.service")
machine.wait_for_open_port(80)
machine.wait_for_open_port(1080)
machine.succeed("curl --fail --max-time 10 --proxy http://user:supersecret@localhost:1080 http://localhost")
machine.fail("curl --fail --max-time 10 --proxy http://user:supervillain@localhost:1080 http://localhost")
machine.succeed("curl --fail --max-time 10 --proxy socks5://user:supersecret@localhost:1080 http://localhost")
'';
})