function AliasTest::testWhitelist

Tests the alias whitelist.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Path/AliasTest.php, line 157
Contains Drupal\system\Tests\Path\AliasTest.

Class

AliasTest
Tests path alias CRUD and lookup functionality.

Namespace

Drupal\system\Tests\Path

Code

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()]);
}