DynamicRoutingTest.php in Bakery Single Sign-On System 8.2
File
tests/src/Functional/DynamicRoutingTest.php
View source
<?php
namespace Drupal\Tests\bakery\Functional;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
use Symfony\Component\Routing\Route;
class DynamicRoutingTest extends BakerySiteTestBase {
protected $defaultTheme = 'stark';
private $routeProvider;
public function setUp() {
parent::setUp();
$this->routeProvider = $this->container
->get('router.route_provider');
}
public function testDynamicRoutes() {
$router = $this->container
->get('router.route_provider');
$this
->config('bakery.settings')
->set('bakery_is_master', 1)
->set('subsite_login', TRUE)
->save();
$this->container
->get('router.builder')
->rebuild();
$this->routeProvider
->reset();
$this
->assertRouteExists('bakery.register');
$this
->assertRouteExists('bakery.login');
$this
->assertRouteExists('bakery.create');
$this
->config('bakery.settings')
->set('bakery_is_master', 1)
->set('subsite_login', FALSE)
->save();
$this->container
->get('router.builder')
->rebuild();
$this->routeProvider
->reset();
$this
->assertRouteNotExists('bakery.register');
$this
->assertRouteNotExists('bakery.login');
$this
->assertRouteExists('bakery.create');
$this
->config('bakery.settings')
->set('bakery_is_master', 0)
->set('subsite_login', TRUE)
->save();
$this->container
->get('router.builder')
->rebuild();
$this->routeProvider
->reset();
$this
->assertRouteExists('bakery.register');
$this
->assertRouteExists('bakery.create');
$this
->assertRouteExists('bakery.update');
$this
->assertRouteExists('bakery.repair');
$this
->assertRouteExists('bakery.pull');
$this
->config('bakery.settings')
->set('bakery_is_master', 0)
->set('subsite_login', FALSE)
->save();
$this->container
->get('router.builder')
->rebuild();
$router
->reset();
$this->routeProvider
->reset();
$this
->assertRouteNotExists('bakery.register');
$this
->assertRouteNotExists('bakery.create');
$this
->assertRouteExists('bakery.update');
$this
->assertRouteExists('bakery.repair');
$this
->assertRouteExists('bakery.pull');
}
protected function assertRouteExists(string $name) {
$this
->assertInstanceOf(Route::class, $this->routeProvider
->getRouteByName($name));
}
protected function assertRouteNotExists(string $name) {
try {
$this
->assertNull($this->routeProvider
->getRouteByName($name));
} catch (RouteNotFoundException $e) {
$this
->assertInstanceOf(RouteNotFoundException::class, $e);
}
}
}