Merge pull request #19299 from owncloud/fixgetRawPathInfo
Fix get raw path info, always return a string
This commit is contained in:
commit
ff75652cb7
|
@ -603,7 +603,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
|
||||||
if (strpos($pathInfo, $name) === 0) {
|
if (strpos($pathInfo, $name) === 0) {
|
||||||
$pathInfo = substr($pathInfo, strlen($name));
|
$pathInfo = substr($pathInfo, strlen($name));
|
||||||
}
|
}
|
||||||
if($pathInfo === '/'){
|
if($pathInfo === false || $pathInfo === '/'){
|
||||||
return '';
|
return '';
|
||||||
} else {
|
} else {
|
||||||
return $pathInfo;
|
return $pathInfo;
|
||||||
|
|
|
@ -60,18 +60,18 @@ class RequestTest extends \Test\TestCase {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Countable
|
// Countable
|
||||||
$this->assertEquals(2, count($request));
|
$this->assertSame(2, count($request));
|
||||||
// Array access
|
// Array access
|
||||||
$this->assertEquals('Joey', $request['nickname']);
|
$this->assertSame('Joey', $request['nickname']);
|
||||||
// "Magic" accessors
|
// "Magic" accessors
|
||||||
$this->assertEquals('Joey', $request->{'nickname'});
|
$this->assertSame('Joey', $request->{'nickname'});
|
||||||
$this->assertTrue(isset($request['nickname']));
|
$this->assertTrue(isset($request['nickname']));
|
||||||
$this->assertTrue(isset($request->{'nickname'}));
|
$this->assertTrue(isset($request->{'nickname'}));
|
||||||
$this->assertEquals(false, isset($request->{'flickname'}));
|
$this->assertFalse(isset($request->{'flickname'}));
|
||||||
// Only testing 'get', but same approach for post, files etc.
|
// Only testing 'get', but same approach for post, files etc.
|
||||||
$this->assertEquals('Joey', $request->get['nickname']);
|
$this->assertSame('Joey', $request->get['nickname']);
|
||||||
// Always returns null if variable not set.
|
// Always returns null if variable not set.
|
||||||
$this->assertEquals(null, $request->{'flickname'});
|
$this->assertSame(null, $request->{'flickname'});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,9 +92,9 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals(3, count($request));
|
$this->assertSame(3, count($request));
|
||||||
$this->assertEquals('Janey', $request->{'nickname'});
|
$this->assertSame('Janey', $request->{'nickname'});
|
||||||
$this->assertEquals('Johnny Weissmüller', $request->{'name'});
|
$this->assertSame('Johnny Weissmüller', $request->{'name'});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -172,10 +172,10 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('GET', $request->method);
|
$this->assertSame('GET', $request->method);
|
||||||
$result = $request->get;
|
$result = $request->get;
|
||||||
$this->assertEquals('John Q. Public', $result['name']);
|
$this->assertSame('John Q. Public', $result['name']);
|
||||||
$this->assertEquals('Joey', $result['nickname']);
|
$this->assertSame('Joey', $result['nickname']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testJsonPost() {
|
public function testJsonPost() {
|
||||||
|
@ -194,12 +194,12 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('POST', $request->method);
|
$this->assertSame('POST', $request->method);
|
||||||
$result = $request->post;
|
$result = $request->post;
|
||||||
$this->assertEquals('John Q. Public', $result['name']);
|
$this->assertSame('John Q. Public', $result['name']);
|
||||||
$this->assertEquals('Joey', $result['nickname']);
|
$this->assertSame('Joey', $result['nickname']);
|
||||||
$this->assertEquals('Joey', $request->params['nickname']);
|
$this->assertSame('Joey', $request->params['nickname']);
|
||||||
$this->assertEquals('Joey', $request['nickname']);
|
$this->assertSame('Joey', $request['nickname']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPatch() {
|
public function testPatch() {
|
||||||
|
@ -219,11 +219,11 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('PATCH', $request->method);
|
$this->assertSame('PATCH', $request->method);
|
||||||
$result = $request->patch;
|
$result = $request->patch;
|
||||||
|
|
||||||
$this->assertEquals('John Q. Public', $result['name']);
|
$this->assertSame('John Q. Public', $result['name']);
|
||||||
$this->assertEquals('Joey', $result['nickname']);
|
$this->assertSame('Joey', $result['nickname']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testJsonPatchAndPut() {
|
public function testJsonPatchAndPut() {
|
||||||
|
@ -244,11 +244,11 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('PUT', $request->method);
|
$this->assertSame('PUT', $request->method);
|
||||||
$result = $request->put;
|
$result = $request->put;
|
||||||
|
|
||||||
$this->assertEquals('John Q. Public', $result['name']);
|
$this->assertSame('John Q. Public', $result['name']);
|
||||||
$this->assertEquals('Joey', $result['nickname']);
|
$this->assertSame('Joey', $result['nickname']);
|
||||||
|
|
||||||
// PATCH content
|
// PATCH content
|
||||||
$data = '{"name": "John Q. Public", "nickname": null}';
|
$data = '{"name": "John Q. Public", "nickname": null}';
|
||||||
|
@ -265,11 +265,11 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('PATCH', $request->method);
|
$this->assertSame('PATCH', $request->method);
|
||||||
$result = $request->patch;
|
$result = $request->patch;
|
||||||
|
|
||||||
$this->assertEquals('John Q. Public', $result['name']);
|
$this->assertSame('John Q. Public', $result['name']);
|
||||||
$this->assertEquals(null, $result['nickname']);
|
$this->assertSame(null, $result['nickname']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPutStream() {
|
public function testPutStream() {
|
||||||
|
@ -290,10 +290,10 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('PUT', $request->method);
|
$this->assertSame('PUT', $request->method);
|
||||||
$resource = $request->put;
|
$resource = $request->put;
|
||||||
$contents = stream_get_contents($resource);
|
$contents = stream_get_contents($resource);
|
||||||
$this->assertEquals($data, $contents);
|
$this->assertSame($data, $contents);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$resource = $request->put;
|
$resource = $request->put;
|
||||||
|
@ -322,7 +322,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
|
|
||||||
$newParams = array('id' => '3', 'test' => 'test2');
|
$newParams = array('id' => '3', 'test' => 'test2');
|
||||||
$request->setUrlParameters($newParams);
|
$request->setUrlParameters($newParams);
|
||||||
$this->assertEquals('test2', $request->getParam('test'));
|
$this->assertSame('test2', $request->getParam('test'));
|
||||||
$this->assertEquals('3', $request->getParam('id'));
|
$this->assertEquals('3', $request->getParam('id'));
|
||||||
$this->assertEquals('3', $request->getParams()['id']);
|
$this->assertEquals('3', $request->getParams()['id']);
|
||||||
}
|
}
|
||||||
|
@ -660,7 +660,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals($matches, $request->isUserAgent($userAgent));
|
$this->assertSame($matches, $request->isUserAgent($userAgent));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -749,7 +749,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('from.server.name:8080', $request->getInsecureServerHost());
|
$this->assertSame('from.server.name:8080', $request->getInsecureServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInsecureServerHostHttpHostHeader() {
|
public function testInsecureServerHostHttpHostHeader() {
|
||||||
|
@ -766,7 +766,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('from.host.header:8080', $request->getInsecureServerHost());
|
$this->assertSame('from.host.header:8080', $request->getInsecureServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInsecureServerHostHttpFromForwardedHeaderSingle() {
|
public function testInsecureServerHostHttpFromForwardedHeaderSingle() {
|
||||||
|
@ -784,7 +784,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('from.forwarded.host:8080', $request->getInsecureServerHost());
|
$this->assertSame('from.forwarded.host:8080', $request->getInsecureServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInsecureServerHostHttpFromForwardedHeaderStacked() {
|
public function testInsecureServerHostHttpFromForwardedHeaderStacked() {
|
||||||
|
@ -802,7 +802,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('from.forwarded.host2:8080', $request->getInsecureServerHost());
|
$this->assertSame('from.forwarded.host2:8080', $request->getInsecureServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetServerHostWithOverwriteHost() {
|
public function testGetServerHostWithOverwriteHost() {
|
||||||
|
@ -830,7 +830,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('my.overwritten.host', $request->getServerHost());
|
$this->assertSame('my.overwritten.host', $request->getServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetServerHostWithTrustedDomain() {
|
public function testGetServerHostWithTrustedDomain() {
|
||||||
|
@ -852,7 +852,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('my.trusted.host', $request->getServerHost());
|
$this->assertSame('my.trusted.host', $request->getServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetServerHostWithUntrustedDomain() {
|
public function testGetServerHostWithUntrustedDomain() {
|
||||||
|
@ -879,7 +879,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('my.trusted.host', $request->getServerHost());
|
$this->assertSame('my.trusted.host', $request->getServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetServerHostWithNoTrustedDomain() {
|
public function testGetServerHostWithNoTrustedDomain() {
|
||||||
|
@ -906,7 +906,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('', $request->getServerHost());
|
$this->assertSame('', $request->getServerHost());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetOverwriteHostDefaultNull() {
|
public function testGetOverwriteHostDefaultNull() {
|
||||||
|
@ -967,7 +967,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('apps/files/', $request->getPathInfo());
|
$this->assertSame('apps/files/', $request->getPathInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1032,7 +1032,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals($expected, $request->getPathInfo());
|
$this->assertSame($expected, $request->getPathInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1055,7 +1055,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals($expected, $request->getRawPathInfo());
|
$this->assertSame($expected, $request->getRawPathInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1078,7 +1078,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals($expected, $request->getRawPathInfo());
|
$this->assertSame($expected, $request->getRawPathInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1101,7 +1101,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->stream
|
$this->stream
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals($expected, $request->getPathInfo());
|
$this->assertSame($expected, $request->getPathInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1109,6 +1109,7 @@ class RequestTest extends \Test\TestCase {
|
||||||
*/
|
*/
|
||||||
public function genericPathInfoProvider() {
|
public function genericPathInfoProvider() {
|
||||||
return [
|
return [
|
||||||
|
['/core/index.php?XDEBUG_SESSION_START=14600', '/core/index.php', ''],
|
||||||
['/index.php/apps/files/', 'index.php', '/apps/files/'],
|
['/index.php/apps/files/', 'index.php', '/apps/files/'],
|
||||||
['/index.php/apps/files/../&/&?someQueryParameter=QueryParam', 'index.php', '/apps/files/../&/&'],
|
['/index.php/apps/files/../&/&?someQueryParameter=QueryParam', 'index.php', '/apps/files/../&/&'],
|
||||||
['/remote.php/漢字編碼方法 / 汉字编码方法', 'remote.php', '/漢字編碼方法 / 汉字编码方法'],
|
['/remote.php/漢字編碼方法 / 汉字编码方法', 'remote.php', '/漢字編碼方法 / 汉字编码方法'],
|
||||||
|
|
Loading…
Reference in New Issue