Introduce a dedicated networking.proxy option
Following the discussion NixOS#5021: - obsolete the nix.proxy option - add the networking.proxy option - open a default no_proxy environment variable - add a rsync option - Manual tests ok. - Automatic tests ok. Amended by lethalman to simplify the option descriptions.
This commit is contained in:
committed by
Luca Bruno
parent
92448fb3ae
commit
3c7e779602
@@ -0,0 +1,109 @@
|
||||
# Test whether `networking.proxy' work as expected.
|
||||
|
||||
# TODO: use a real proxy node and put this test into networking.nix
|
||||
# TODO: test whether nix tools work as expected behind a proxy
|
||||
|
||||
let default-config = {
|
||||
imports = [ ./common/user-account.nix ];
|
||||
|
||||
services.xserver.enable = false;
|
||||
|
||||
virtualisation.memorySize = 128;
|
||||
};
|
||||
in import ./make-test.nix {
|
||||
name = "networking-proxy";
|
||||
|
||||
nodes = {
|
||||
# no proxy
|
||||
machine =
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
default-config;
|
||||
|
||||
# proxy default
|
||||
machine2 =
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
default-config // {
|
||||
networking.proxy.default = "http://user:pass@host:port";
|
||||
};
|
||||
|
||||
# specific proxy options
|
||||
machine3 =
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
default-config //
|
||||
{
|
||||
networking.proxy = {
|
||||
# useless because overriden by the next options
|
||||
default = "http://user:pass@host:port";
|
||||
# advanced proxy setup
|
||||
httpProxy = "123-http://user:pass@http-host:port";
|
||||
httpsProxy = "456-http://user:pass@https-host:port";
|
||||
rsyncProxy = "789-http://user:pass@rsync-host:port";
|
||||
ftpProxy = "101112-http://user:pass@ftp-host:port";
|
||||
noProxy = "131415-127.0.0.1,localhost,.localdomain";
|
||||
};
|
||||
};
|
||||
|
||||
# mix default + proxy options
|
||||
machine4 =
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
default-config // {
|
||||
networking.proxy = {
|
||||
# open for all *_proxy env var
|
||||
default = "000-http://user:pass@default-host:port";
|
||||
# except for those 2
|
||||
rsyncProxy = "123-http://user:pass@http-host:port";
|
||||
noProxy = "131415-127.0.0.1,localhost,.localdomain";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
startAll;
|
||||
|
||||
# no proxy at all
|
||||
print $machine->execute("env | grep -i proxy");
|
||||
print $machine->execute("su - alice -c 'env | grep -i proxy'");
|
||||
$machine->mustFail("env | grep -i proxy");
|
||||
$machine->mustFail("su - alice -c 'env | grep -i proxy'");
|
||||
|
||||
# Use a default proxy option
|
||||
print $machine2->execute("env | grep -i proxy");
|
||||
print $machine2->execute("su - alice -c 'env | grep -i proxy'");
|
||||
$machine2->mustSucceed("env | grep -i proxy");
|
||||
$machine2->mustSucceed("su - alice -c 'env | grep -i proxy'");
|
||||
|
||||
# explicitly set each proxy option
|
||||
print $machine3->execute("env | grep -i proxy");
|
||||
print $machine3->execute("su - alice -c 'env | grep -i proxy'");
|
||||
$machine3->mustSucceed("env | grep -i http_proxy | grep 123");
|
||||
$machine3->mustSucceed("env | grep -i https_proxy | grep 456");
|
||||
$machine3->mustSucceed("env | grep -i rsync_proxy | grep 789");
|
||||
$machine3->mustSucceed("env | grep -i ftp_proxy | grep 101112");
|
||||
$machine3->mustSucceed("env | grep -i no_proxy | grep 131415");
|
||||
$machine3->mustSucceed("su - alice -c 'env | grep -i http_proxy | grep 123'");
|
||||
$machine3->mustSucceed("su - alice -c 'env | grep -i https_proxy | grep 456'");
|
||||
$machine3->mustSucceed("su - alice -c 'env | grep -i rsync_proxy | grep 789'");
|
||||
$machine3->mustSucceed("su - alice -c 'env | grep -i ftp_proxy | grep 101112'");
|
||||
$machine3->mustSucceed("su - alice -c 'env | grep -i no_proxy | grep 131415'");
|
||||
|
||||
# set default proxy option + some other specifics
|
||||
print $machine4->execute("env | grep -i proxy");
|
||||
print $machine4->execute("su - alice -c 'env | grep -i proxy'");
|
||||
$machine4->mustSucceed("env | grep -i http_proxy | grep 000");
|
||||
$machine4->mustSucceed("env | grep -i https_proxy | grep 000");
|
||||
$machine4->mustSucceed("env | grep -i rsync_proxy | grep 123");
|
||||
$machine4->mustSucceed("env | grep -i ftp_proxy | grep 000");
|
||||
$machine4->mustSucceed("env | grep -i no_proxy | grep 131415");
|
||||
$machine4->mustSucceed("su - alice -c 'env | grep -i http_proxy | grep 000'");
|
||||
$machine4->mustSucceed("su - alice -c 'env | grep -i https_proxy | grep 000'");
|
||||
$machine4->mustSucceed("su - alice -c 'env | grep -i rsync_proxy | grep 123'");
|
||||
$machine4->mustSucceed("su - alice -c 'env | grep -i ftp_proxy | grep 000'");
|
||||
$machine4->mustSucceed("su - alice -c 'env | grep -i no_proxy | grep 131415'");
|
||||
'';
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user