From: Gergő Tisza Date: Tue, 30 Oct 2018 05:32:13 +0000 (-0700) Subject: Fix IP handling in DerivativeRequest X-Git-Tag: 1.34.0-rc.0~3593^2 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dcompta/comptes/%28%5B%5E/fichier?a=commitdiff_plain;h=3331e9d26ca05b9cf5b17b5addb903e72a694785;p=lhc%2Fweb%2Fwiklou.git 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 --- 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() ); + } + +}