View source
<?php
namespace Drupal\Tests\cas\Unit\Routing;
use Drupal\Tests\UnitTestCase;
use Drupal\cas\Routing\CasRouteEnhancer;
class CasRouteEnhancerTest extends UnitTestCase {
protected $casHelper;
protected $request;
protected $route;
protected function setUp() {
parent::setUp();
$this->casHelper = $this
->getMockBuilder('\\Drupal\\cas\\Service\\CasHelper')
->disableOriginalConstructor()
->getMock();
$this->request = $this
->getMockBuilder('\\Symfony\\Component\\HttpFoundation\\Request')
->disableOriginalConstructor()
->getMock();
$this->route = $this
->getMockBuilder('\\Symfony\\Component\\Routing\\Route')
->disableOriginalConstructor()
->getMock();
}
public function testConstruct() {
$this
->assertInstanceOf('\\Drupal\\cas\\Routing\\CasRouteEnhancer', new CasRouteEnhancer($this
->getConfigFactoryStub()));
}
public function testEnhance($path, $cas_logout_enabled, $is_cas_user) {
$session = $this
->getMockBuilder('\\Symfony\\Component\\HttpFoundation\\Session')
->disableOriginalConstructor()
->setMethods([
'get',
])
->getMock();
$session
->expects($this
->any())
->method('get')
->with('is_cas_user')
->willReturn($is_cas_user);
$this->request
->expects($this
->any())
->method('getSession')
->willReturn($session);
$this->route
->expects($this
->any())
->method('getPath')
->willReturn($path);
$enhancer = new CasRouteEnhancer($this
->getConfigFactoryStub([
'cas.settings' => [
'logout.cas_logout' => $cas_logout_enabled,
],
]));
$originalDefaults = [
'_route_object' => $this->route,
];
$newDefaults = $enhancer
->enhance($originalDefaults, $this->request);
if ($path == '/user/logout' && $cas_logout_enabled && $is_cas_user) {
$this
->assertArrayHasKey('_controller', $newDefaults, '$newDefaults array does not contain "_controller" key.');
$this
->assertNotEmpty($newDefaults['_controller']);
$this
->assertEquals($newDefaults['_controller'], '\\Drupal\\cas\\Controller\\LogoutController::logout');
}
else {
$this
->assertEquals($originalDefaults, $newDefaults);
}
}
public function enhanceDataProvider() {
$params = [
[
'/user/logout',
FALSE,
FALSE,
],
[
'/user/logout',
TRUE,
FALSE,
],
[
'/user/logout',
FALSE,
TRUE,
],
[
'/user/logout',
TRUE,
TRUE,
],
[
'/foobar',
TRUE,
TRUE,
],
];
return $params;
}
}