class UnroutedUrlTest in Drupal 8
Same name and namespace in other branches
- 9 core/tests/Drupal/Tests/Core/UnroutedUrlTest.php \Drupal\Tests\Core\UnroutedUrlTest
- 10 core/tests/Drupal/Tests/Core/UnroutedUrlTest.php \Drupal\Tests\Core\UnroutedUrlTest
@coversDefaultClass \Drupal\Core\Url @group UrlTest
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \PHPUnit\Framework\TestCase uses PhpunitCompatibilityTrait
- class \Drupal\Tests\Core\UnroutedUrlTest
Expanded class hierarchy of UnroutedUrlTest
File
- core/
tests/ Drupal/ Tests/ Core/ UnroutedUrlTest.php, line 15
Namespace
Drupal\Tests\CoreView source
class UnroutedUrlTest extends UnitTestCase {
/**
* The URL assembler
*
* @var \Drupal\Core\Utility\UnroutedUrlAssemblerInterface|\PHPUnit\Framework\MockObject\MockObject
*/
protected $urlAssembler;
/**
* The router.
*
* @var \Drupal\Tests\Core\Routing\TestRouterInterface|\PHPUnit\Framework\MockObject\MockObject
*/
protected $router;
/**
* An unrouted, external URL to test.
*
* @var string
*/
protected $unroutedExternal = 'https://www.drupal.org';
/**
* An unrouted, internal URL to test.
*
* @var string
*/
protected $unroutedInternal = 'base:robots.txt';
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this->urlAssembler = $this
->createMock('Drupal\\Core\\Utility\\UnroutedUrlAssemblerInterface');
$this->urlAssembler
->expects($this
->any())
->method('assemble')
->will($this
->returnArgument(0));
$this->router = $this
->createMock('Drupal\\Tests\\Core\\Routing\\TestRouterInterface');
$container = new ContainerBuilder();
$container
->set('router.no_access_checks', $this->router);
$container
->set('unrouted_url_assembler', $this->urlAssembler);
\Drupal::setContainer($container);
}
/**
* Tests the fromUri() method.
*
* @covers ::fromUri
*
* @dataProvider providerFromUri
*/
public function testFromUri($uri, $is_external) {
$url = Url::fromUri($uri);
$this
->assertInstanceOf('Drupal\\Core\\Url', $url);
}
/**
* Data provider for testFromUri().
*/
public function providerFromUri() {
return [
// [$uri, $is_external]
// An external URI.
[
'https://www.drupal.org',
TRUE,
],
// A protocol-relative URL.
[
'//www.drupal.org',
TRUE,
],
// An internal, unrouted, base-relative URI.
[
'base:robots.txt',
FALSE,
],
// Base-relative URIs with special characters.
[
'base:AKI@&hO@',
FALSE,
],
[
'base:(:;2&+h^',
FALSE,
],
// Various token formats.
[
'base:node/[token]',
FALSE,
],
[
'base:node/%',
FALSE,
],
[
'base:node/[token:token]',
FALSE,
],
[
'base:node/{{ token }}',
FALSE,
],
];
}
/**
* Tests the fromUri() method.
*
* @covers ::fromUri
* @dataProvider providerFromInvalidUri
*/
public function testFromInvalidUri($uri) {
$this
->expectException(\InvalidArgumentException::class);
$url = Url::fromUri($uri);
}
/**
* Data provider for testFromInvalidUri().
*/
public function providerFromInvalidUri() {
return [
// Schemeless paths.
[
'test',
],
[
'/test',
],
// Schemeless path with a query string.
[
'foo?bar',
],
// Only a query string.
[
'?bar',
],
// Only a fragment.
[
'#foo',
],
// Disallowed characters in the authority (host name) that are valid
// elsewhere in the path.
[
'base://(:;2&+h^',
],
];
}
/**
* Tests the createFromRequest method.
*
* @covers ::createFromRequest
*/
public function testCreateFromRequest() {
$request = Request::create('/test-path');
$this->router
->expects($this
->once())
->method('matchRequest')
->with($request)
->will($this
->throwException(new ResourceNotFoundException()));
$this
->expectException(ResourceNotFoundException::class);
Url::createFromRequest($request);
}
/**
* Tests the isExternal() method.
*
* @depends testFromUri
* @dataProvider providerFromUri
*
* @covers ::isExternal
*/
public function testIsExternal($uri, $is_external) {
$url = Url::fromUri($uri);
$this
->assertSame($url
->isExternal(), $is_external);
}
/**
* Tests the toString() method.
*
* @depends testFromUri
* @dataProvider providerFromUri
*
* @covers ::toString
*/
public function testToString($uri) {
$url = Url::fromUri($uri);
$this
->assertSame($uri, $url
->toString());
}
/**
* Tests the getRouteName() method.
*
* @depends testFromUri
* @dataProvider providerFromUri
*
* @covers ::getRouteName
*/
public function testGetRouteName($uri) {
$url = Url::fromUri($uri);
$this
->expectException(\UnexpectedValueException::class);
$url
->getRouteName();
}
/**
* Tests the getRouteParameters() method.
*
* @depends testFromUri
* @dataProvider providerFromUri
*
* @covers ::getRouteParameters
*/
public function testGetRouteParameters($uri) {
$url = Url::fromUri($uri);
$this
->expectException(\UnexpectedValueException::class);
$url
->getRouteParameters();
}
/**
* Tests the getInternalPath() method.
*
* @depends testFromUri
* @dataProvider providerFromUri
*
* @covers ::getInternalPath
*/
public function testGetInternalPath($uri) {
$url = Url::fromUri($uri);
$this
->expectException(\Exception::class);
$url
->getInternalPath();
}
/**
* Tests the getPath() method.
*
* @depends testFromUri
* @dataProvider providerFromUri
*
* @covers ::getUri
*/
public function testGetUri($uri) {
$url = Url::fromUri($uri);
$this
->assertNotNull($url
->getUri());
}
/**
* Tests the getOptions() method.
*
* @depends testFromUri
* @dataProvider providerFromUri
*
* @covers ::getOptions
*/
public function testGetOptions($uri) {
$url = Url::fromUri($uri);
$this
->assertIsArray($url
->getOptions());
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PhpunitCompatibilityTrait:: |
public | function | Returns a mock object for the specified class using the available method. | |
PhpunitCompatibilityTrait:: |
public | function | Compatibility layer for PHPUnit 6 to support PHPUnit 4 code. | |
UnitTestCase:: |
protected | property | The random generator. | |
UnitTestCase:: |
protected | property | The app root. | 1 |
UnitTestCase:: |
protected | function | Asserts if two arrays are equal by sorting them first. | |
UnitTestCase:: |
protected | function | Mocks a block with a block plugin. | 1 |
UnitTestCase:: |
protected | function | Returns a stub class resolver. | |
UnitTestCase:: |
public | function | Returns a stub config factory that behaves according to the passed array. | |
UnitTestCase:: |
public | function | Returns a stub config storage that returns the supplied configuration. | |
UnitTestCase:: |
protected | function | Sets up a container with a cache tags invalidator. | |
UnitTestCase:: |
protected | function | Gets the random generator for the utility methods. | |
UnitTestCase:: |
public | function | Returns a stub translation manager that just returns the passed string. | |
UnitTestCase:: |
public | function | Generates a unique random string containing letters and numbers. | |
UnroutedUrlTest:: |
protected | property | The router. | |
UnroutedUrlTest:: |
protected | property | An unrouted, external URL to test. | |
UnroutedUrlTest:: |
protected | property | An unrouted, internal URL to test. | |
UnroutedUrlTest:: |
protected | property | The URL assembler | |
UnroutedUrlTest:: |
public | function | Data provider for testFromInvalidUri(). | |
UnroutedUrlTest:: |
public | function | Data provider for testFromUri(). | |
UnroutedUrlTest:: |
protected | function |
Overrides UnitTestCase:: |
|
UnroutedUrlTest:: |
public | function | Tests the createFromRequest method. | |
UnroutedUrlTest:: |
public | function | Tests the fromUri() method. | |
UnroutedUrlTest:: |
public | function | Tests the fromUri() method. | |
UnroutedUrlTest:: |
public | function | Tests the getInternalPath() method. | |
UnroutedUrlTest:: |
public | function | Tests the getOptions() method. | |
UnroutedUrlTest:: |
public | function | Tests the getRouteName() method. | |
UnroutedUrlTest:: |
public | function | Tests the getRouteParameters() method. | |
UnroutedUrlTest:: |
public | function | Tests the getPath() method. | |
UnroutedUrlTest:: |
public | function | Tests the isExternal() method. | |
UnroutedUrlTest:: |
public | function | Tests the toString() method. |