From 3331e9d26ca05b9cf5b17b5addb903e72a694785 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gerg=C5=91=20Tisza?= Date: Mon, 29 Oct 2018 22:32:13 -0700 Subject: [PATCH] Fix IP handling in DerivativeRequest $r->getIP() should return what was set by $r->setIP(); currently that breaks for DerivativeRequest as get reads from the base but set writes on the derivative. Change-Id: If30c233931ceb1ca05da8866da3c3ab78de1a339 --- includes/DerivativeRequest.php | 7 ++++++- .../includes/DerivativeRequestTest.php | 21 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/includes/DerivativeRequestTest.php diff --git a/includes/DerivativeRequest.php b/includes/DerivativeRequest.php index 487e86c8d0..e2d59b080c 100644 --- a/includes/DerivativeRequest.php +++ b/includes/DerivativeRequest.php @@ -33,6 +33,7 @@ */ class DerivativeRequest extends FauxRequest { private $base; + private $ip; /** * @param WebRequest $base @@ -74,7 +75,11 @@ class DerivativeRequest extends FauxRequest { } public function getIP() { - return $this->base->getIP(); + return $this->ip ?: $this->base->getIP(); + } + + public function setIP( $ip ) { + $this->ip = $ip; } public function getProtocol() { diff --git a/tests/phpunit/includes/DerivativeRequestTest.php b/tests/phpunit/includes/DerivativeRequestTest.php new file mode 100644 index 0000000000..f33022b352 --- /dev/null +++ b/tests/phpunit/includes/DerivativeRequestTest.php @@ -0,0 +1,21 @@ +setIP( '1.2.3.4' ); + $derivative = new DerivativeRequest( $original, [] ); + + $this->assertEquals( '1.2.3.4', $derivative->getIP() ); + + $derivative->setIP( '5.6.7.8' ); + + $this->assertEquals( '5.6.7.8', $derivative->getIP() ); + $this->assertEquals( '1.2.3.4', $original->getIP() ); + } + +} -- 2.20.1