summaryrefslogtreecommitdiffstats
path: root/t
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2016-07-04 17:43:44 +0200
committerDylan William Hardison <dylan@hardison.net>2016-07-08 18:09:52 +0200
commitdfc33c89b8cac25951867a2e6821120c92bb055b (patch)
treef9879d1afdaf0c4b2928d32306cf8ec56aa73607 /t
parent3f75ddd65da6a5753fa90b429ed6f43b4eeae088 (diff)
downloadbugzilla-dfc33c89b8cac25951867a2e6821120c92bb055b.tar.gz
bugzilla-dfc33c89b8cac25951867a2e6821120c92bb055b.tar.xz
Bug 1284277 - allow inbound_proxy to be set to '*'
r=dkl
Diffstat (limited to 't')
-rw-r--r--t/013remote_ip.t81
1 files changed, 81 insertions, 0 deletions
diff --git a/t/013remote_ip.t b/t/013remote_ip.t
new file mode 100644
index 000000000..1cc832a9b
--- /dev/null
+++ b/t/013remote_ip.t
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+use strict;
+use lib qw(. lib t);
+use Test::More qw(no_plan);
+use Bugzilla;
+use Bugzilla::Util qw(remote_ip);
+
+my $params = Bugzilla->params;
+
+{
+ local $params->{inbound_proxies} = '10.0.0.1,10.0.0.2';
+ local $ENV{REMOTE_ADDR} = '10.0.0.2';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '10.42.42.42';
+
+ is(remote_ip(), '10.42.42.42', "from proxy 2");
+}
+
+{
+ local $params->{inbound_proxies} = '10.0.0.1,10.0.0.2';
+ local $ENV{REMOTE_ADDR} = '10.0.0.1';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '10.42.42.42';
+
+ is(remote_ip(), '10.42.42.42', "from proxy 1");
+}
+
+{
+ local $params->{inbound_proxies} = '10.0.0.1,10.0.0.2';
+ local $ENV{REMOTE_ADDR} = '10.0.0.3';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '10.42.42.42';
+
+ is(remote_ip(), '10.0.0.3', "not a proxy");
+}
+
+{
+ local $params->{inbound_proxies} = '*';
+ local $ENV{REMOTE_ADDR} = '10.0.0.3';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '10.42.42.42,1.4.9.2';
+
+ is(remote_ip(), '10.42.42.42', "always proxy");
+}
+
+{
+ local $params->{inbound_proxies} = '';
+ local $ENV{REMOTE_ADDR} = '10.9.8.7';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '10.42.42.42,1.4.9.2';
+
+ is(remote_ip(), '10.9.8.7', "never proxy");
+}
+
+
+{
+ local $params->{inbound_proxies} = '10.0.0.1,2600:cafe::cafe:ffff:bf42:4998';
+ local $ENV{REMOTE_ADDR} = '2600:cafe::cafe:ffff:bf42:4998';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '2600:cafe::cafe:ffff:bf42:BEEF';
+
+ is(remote_ip(), '2600:cafe::cafe:ffff:bf42:BEEF', "from proxy ipv6");
+}
+
+{
+ local $params->{inbound_proxies} = '10.0.0.1,2600:cafe::cafe:ffff:bf42:4998';
+ local $ENV{REMOTE_ADDR} = '2600:cafe::cafe:ffff:bf42:DEAD';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '2600:cafe::cafe:ffff:bf42:BEEF';
+
+ is(remote_ip(), '2600:cafe::cafe:ffff:bf42:DEAD', "invalid proxy ipv6");
+}
+
+
+{
+ local $params->{inbound_proxies} = '*';
+ local $ENV{REMOTE_ADDR} = '2600:cafe::cafe:ffff:bf42:DEAD';
+ local $ENV{HTTP_X_FORWARDED_FOR} = '';
+
+ is(remote_ip(), '2600:cafe::cafe:ffff:bf42:DEAD', "always proxy ipv6");
+}