|
@@ -81,6 +81,22 @@ class RequestTest extends \PHPUnit_Framework_TestCase
|
|
|
$this->assertEquals(90, $request->getPort());
|
|
|
$this->assertTrue($request->isSecure());
|
|
|
|
|
|
+ $request = Request::create('https://127.0.0.1:90/foo');
|
|
|
+ $this->assertEquals('https://127.0.0.1:90/foo', $request->getUri());
|
|
|
+ $this->assertEquals('/foo', $request->getPathInfo());
|
|
|
+ $this->assertEquals('127.0.0.1', $request->getHost());
|
|
|
+ $this->assertEquals('127.0.0.1:90', $request->getHttpHost());
|
|
|
+ $this->assertEquals(90, $request->getPort());
|
|
|
+ $this->assertTrue($request->isSecure());
|
|
|
+
|
|
|
+ $request = Request::create('https://[::1]:90/foo');
|
|
|
+ $this->assertEquals('https://[::1]:90/foo', $request->getUri());
|
|
|
+ $this->assertEquals('/foo', $request->getPathInfo());
|
|
|
+ $this->assertEquals('[::1]', $request->getHost());
|
|
|
+ $this->assertEquals('[::1]:90', $request->getHttpHost());
|
|
|
+ $this->assertEquals(90, $request->getPort());
|
|
|
+ $this->assertTrue($request->isSecure());
|
|
|
+
|
|
|
$json = '{"jsonrpc":"2.0","method":"echo","id":7,"params":["Hello World"]}';
|
|
|
$request = Request::create('http://example.com/jsonrpc', 'POST', array(), array(), array(), array(), $json);
|
|
|
$this->assertEquals($json, $request->getContent());
|
|
@@ -434,21 +450,38 @@ class RequestTest extends \PHPUnit_Framework_TestCase
|
|
|
$this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method from _method if defined and POST');
|
|
|
}
|
|
|
|
|
|
- public function testGetClientIp()
|
|
|
+ /**
|
|
|
+ * @dataProvider testGetClientIpProvider
|
|
|
+ */
|
|
|
+ public function testGetClientIp($expected, $proxy, $remoteAddr, $httpClientIp, $httpForwardedFor)
|
|
|
{
|
|
|
$request = new Request;
|
|
|
$this->assertEquals('', $request->getClientIp());
|
|
|
$this->assertEquals('', $request->getClientIp(true));
|
|
|
- $request->initialize(array(), array(), array(), array(), array(), array('REMOTE_ADDR' => '88.88.88.88'));
|
|
|
- $this->assertEquals('88.88.88.88', $request->getClientIp());
|
|
|
- $request->initialize(array(), array(), array(), array(), array(), array('REMOTE_ADDR' => '127.0.0.1', 'HTTP_CLIENT_IP' => '88.88.88.88'));
|
|
|
- $this->assertEquals('127.0.0.1', $request->getClientIp());
|
|
|
- $request->initialize(array(), array(), array(), array(), array(), array('REMOTE_ADDR' => '127.0.0.1', 'HTTP_CLIENT_IP' => '88.88.88.88'));
|
|
|
- $this->assertEquals('88.88.88.88', $request->getClientIp(true));
|
|
|
- $request->initialize(array(), array(), array(), array(), array(), array('REMOTE_ADDR' => '127.0.0.1', 'HTTP_X_FORWARDED_FOR' => '88.88.88.88'));
|
|
|
- $this->assertEquals('127.0.0.1', $request->getClientIp());
|
|
|
- $request->initialize(array(), array(), array(), array(), array(), array('REMOTE_ADDR' => '127.0.0.1', 'HTTP_X_FORWARDED_FOR' => '88.88.88.88'));
|
|
|
- $this->assertEquals('88.88.88.88', $request->getClientIp(true));
|
|
|
+
|
|
|
+ $server = array('REMOTE_ADDR' => $remoteAddr);
|
|
|
+ if (!is_null($httpClientIp)) {
|
|
|
+ $server['HTTP_CLIENT_IP'] = $httpClientIp;
|
|
|
+ }
|
|
|
+ if (!is_null($httpForwardedFor)) {
|
|
|
+ $server['HTTP_X_FORWARDED_FOR'] = $httpForwardedFor;
|
|
|
+ }
|
|
|
+
|
|
|
+ $request->initialize(array(), array(), array(), array(), array(), $server);
|
|
|
+ $this->assertEquals($expected, $request->getClientIp($proxy));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testGetClientIpProvider()
|
|
|
+ {
|
|
|
+ return array(
|
|
|
+ array('88.88.88.88', false, '88.88.88.88', null, null),
|
|
|
+ array('127.0.0.1', false, '127.0.0.1', '88.88.88.88', null),
|
|
|
+ array('88.88.88.88', true, '127.0.0.1', '88.88.88.88', null),
|
|
|
+ array('127.0.0.1', false, '127.0.0.1', null, '88.88.88.88'),
|
|
|
+ array('88.88.88.88', true, '127.0.0.1', null, '88.88.88.88'),
|
|
|
+ array('::1', false, '::1', null, null),
|
|
|
+ array('2620:0:1cfe:face:b00c::3', true, '::1', '2620:0:1cfe:face:b00c::3', null),
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
public function testGetContentWorksTwiceInDefaultMode()
|