class TrustedRedirectResponseTest in Drupal 8
Same name and namespace in other branches
- 9 core/tests/Drupal/Tests/Core/Routing/TrustedRedirectResponseTest.php \Drupal\Tests\Core\Routing\TrustedRedirectResponseTest
- 10 core/tests/Drupal/Tests/Core/Routing/TrustedRedirectResponseTest.php \Drupal\Tests\Core\Routing\TrustedRedirectResponseTest
@coversDefaultClass \Drupal\Core\Routing\TrustedRedirectResponse @group Routing
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \PHPUnit\Framework\TestCase uses PhpunitCompatibilityTrait
- class \Drupal\Tests\Core\Routing\TrustedRedirectResponseTest
Expanded class hierarchy of TrustedRedirectResponseTest
File
- core/
tests/ Drupal/ Tests/ Core/ Routing/ TrustedRedirectResponseTest.php, line 18
Namespace
Drupal\Tests\Core\RoutingView source
class TrustedRedirectResponseTest extends UnitTestCase {
/**
* @covers ::setTargetUrl
*/
public function testSetTargetUrlWithInternalUrl() {
$redirect_response = new TrustedRedirectResponse('/example');
$redirect_response
->setTargetUrl('/example2');
$this
->assertEquals('/example2', $redirect_response
->getTargetUrl());
}
/**
* @covers ::setTargetUrl
*/
public function testSetTargetUrlWithUntrustedUrl() {
$request_context = new RequestContext();
$request_context
->setCompleteBaseUrl('https://www.drupal.org');
$container = new ContainerBuilder();
$container
->set('router.request_context', $request_context);
\Drupal::setContainer($container);
$redirect_response = new TrustedRedirectResponse('/example');
$this
->expectException(\InvalidArgumentException::class);
$redirect_response
->setTargetUrl('http://evil-url.com/example');
}
/**
* @covers ::setTargetUrl
*/
public function testSetTargetUrlWithTrustedUrl() {
$redirect_response = new TrustedRedirectResponse('/example');
$redirect_response
->setTrustedTargetUrl('http://good-external-url.com/example');
$this
->assertEquals('http://good-external-url.com/example', $redirect_response
->getTargetUrl());
}
/**
* @covers ::createFromRedirectResponse
* @dataProvider providerCreateFromRedirectResponse
*/
public function testCreateFromRedirectResponse($redirect_response) {
$trusted_redirect_response = TrustedRedirectResponse::createFromRedirectResponse($redirect_response);
// The trusted redirect response is always a CacheableResponseInterface instance.
$this
->assertInstanceOf(CacheableResponseInterface::class, $trusted_redirect_response);
// But it is only actually cacheable (non-zero max-age) if the redirect
// response passed to TrustedRedirectResponse::createFromRedirectResponse()
// is itself cacheable.
$expected_cacheability = $redirect_response instanceof CacheableResponseInterface ? $redirect_response
->getCacheableMetadata() : (new CacheableMetadata())
->setCacheMaxAge(0);
$this
->assertEquals($expected_cacheability, $trusted_redirect_response
->getCacheableMetadata());
}
/**
* @return array
*/
public function providerCreateFromRedirectResponse() {
return [
'cacheable-with-tags' => [
(new CacheableRedirectResponse('/example'))
->addCacheableDependency((new CacheableMetadata())
->addCacheTags([
'foo',
])),
],
'cacheable-with-max-age-0' => [
(new CacheableRedirectResponse('/example'))
->addCacheableDependency((new CacheableMetadata())
->setCacheMaxAge(0)),
],
'uncacheable' => [
new RedirectResponse('/example'),
],
];
}
}
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. | |
TrustedRedirectResponseTest:: |
public | function | ||
TrustedRedirectResponseTest:: |
public | function | @covers ::createFromRedirectResponse @dataProvider providerCreateFromRedirectResponse | |
TrustedRedirectResponseTest:: |
public | function | @covers ::setTargetUrl | |
TrustedRedirectResponseTest:: |
public | function | @covers ::setTargetUrl | |
TrustedRedirectResponseTest:: |
public | function | @covers ::setTargetUrl | |
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. | |
UnitTestCase:: |
protected | function | 340 |