Issue #2340379 by larowlan: Allow PathValidator::getUrlIfValid to support paths with leading /.

8.0.x
Alex Pott 2014-09-18 08:35:46 +01:00
parent f6d2f233f4
commit 966aed8f90
2 changed files with 11 additions and 3 deletions

View File

@ -102,6 +102,7 @@ class PathValidator implements PathValidatorInterface {
return Url::createFromPath($path);
}
$path = ltrim($path, '/');
$request = Request::create('/' . $path);
$attributes = $this->getPathAttributes($path, $request);

View File

@ -246,16 +246,16 @@ class PathValidatorTest extends UnitTestCase {
* Tests the getUrlIfValid() method when there is access.
*/
public function testGetUrlIfValidWithAccess() {
$this->account->expects($this->once())
$this->account->expects($this->exactly(2))
->method('hasPermission')
->with('link to any page')
->willReturn(FALSE);
$this->accessAwareRouter->expects($this->once())
$this->accessAwareRouter->expects($this->exactly(2))
->method('match')
->with('/test-path')
->willReturn([RouteObjectInterface::ROUTE_NAME => 'test_route', '_raw_variables' => new ParameterBag(['key' => 'value'])]);
$this->pathProcessor->expects($this->once())
$this->pathProcessor->expects($this->exactly(2))
->method('processInbound')
->willReturnArgument(0);
@ -264,6 +264,13 @@ class PathValidatorTest extends UnitTestCase {
$this->assertEquals('test_route', $url->getRouteName());
$this->assertEquals(['key' => 'value'], $url->getRouteParameters());
// Test with leading /.
$url = $this->pathValidator->getUrlIfValid('/test-path');
$this->assertInstanceOf('Drupal\Core\Url', $url);
$this->assertEquals('test_route', $url->getRouteName());
$this->assertEquals(['key' => 'value'], $url->getRouteParameters());
}
/**