diff options
author | Antoine R. Dumont <antoine.romain.dumont@gmail.com> | 2014-11-19 20:13:54 +0100 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2014-11-30 15:19:25 +0100 |
commit | 3c7e77960282dcf550fc2df8445c7da3ee27fb3c (patch) | |
tree | 35409f1f24b84e23ff90d93c798f5e2cd4038e37 /nixos/tests | |
parent | 92448fb3ae608c8236140a13cbff635a9133dc86 (diff) | |
download | nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.gz nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.bz2 nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.lz nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.xz nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.zst nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.zip |
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.
Diffstat (limited to 'nixos/tests')
-rw-r--r-- | nixos/tests/networking-proxy.nix | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/nixos/tests/networking-proxy.nix b/nixos/tests/networking-proxy.nix new file mode 100644 index 000000000000..30844805ebf8 --- /dev/null +++ b/nixos/tests/networking-proxy.nix @@ -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'"); + ''; + +} |