Tests the alias whitelist.
function testWhitelist() {
// Prepare database table.
$connection = Database::getConnection();
$this->fixtures
->createTables($connection);
// Create AliasManager and Path object.
$whitelist = new AliasWhitelist('path_alias_whitelist', 'cache', $this->container
->get('keyvalue'), $connection);
$aliasManager = new AliasManager($connection, $whitelist, $this->container
->get('language_manager'));
$path = new Path($connection, $aliasManager);
// No alias for user and admin yet, so should be NULL.
$this
->assertNull($whitelist['user']);
$this
->assertNull($whitelist['admin']);
// Non-existing path roots should be NULL too. Use a length of 7 to avoid
// possible conflict with random aliases below.
$this
->assertNull($whitelist[$this
->randomName()]);
// Add an alias for user/1, user should get whitelisted now.
$path
->save('user/1', $this
->randomName());
$this
->assertTrue($whitelist['user']);
$this
->assertNull($whitelist['admin']);
$this
->assertNull($whitelist[$this
->randomName()]);
// Add an alias for admin, both should get whitelisted now.
$path
->save('admin/something', $this
->randomName());
$this
->assertTrue($whitelist['user']);
$this
->assertTrue($whitelist['admin']);
$this
->assertNull($whitelist[$this
->randomName()]);
// Remove the user alias again, whitelist entry should be removed.
$path
->delete(array(
'source' => 'user/1',
));
$this
->assertNull($whitelist['user']);
$this
->assertTrue($whitelist['admin']);
$this
->assertNull($whitelist[$this
->randomName()]);
}