You are here

public function AuthenticationCollectorTest::testAuthenticationCollector in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Core/Authentication/AuthenticationCollectorTest.php \Drupal\Tests\Core\Authentication\AuthenticationCollectorTest::testAuthenticationCollector()

Tests adding, getting, and order of priorities.

@covers ::addProvider @covers ::getSortedProviders @covers ::getProvider @covers ::isGlobal

File

core/tests/Drupal/Tests/Core/Authentication/AuthenticationCollectorTest.php, line 29
Contains \Drupal\Tests\Core\Authentication\AuthenticationCollectorTest.

Class

AuthenticationCollectorTest
@coversDefaultClass \Drupal\Core\Authentication\AuthenticationCollector @group Authentication

Namespace

Drupal\Tests\Core\Authentication

Code

public function testAuthenticationCollector() {
  $providers = [];
  $global = [];
  $authentication_collector = new AuthenticationCollector();
  $priorities = [
    2,
    0,
    -8,
    10,
    1,
    3,
    -5,
    0,
    6,
    -10,
    -4,
  ];
  foreach ($priorities as $priority) {
    $provider_id = $this
      ->randomMachineName();
    $provider = new TestAuthenticationProvider($provider_id);
    $providers[$priority][$provider_id] = $provider;
    $global[$provider_id] = rand(0, 1) > 0.5;
    $authentication_collector
      ->addProvider($provider, $provider_id, $priority, $global[$provider_id]);
  }

  // Sort the $providers array by priority (highest number is lowest priority)
  // and compare with AuthenticationCollector::getSortedProviders().
  krsort($providers);

  // Merge nested providers from $providers into $sorted_providers.
  $sorted_providers = [];
  foreach ($providers as $providers_priority) {
    $sorted_providers = array_merge($sorted_providers, $providers_priority);
  }
  $this
    ->assertEquals($sorted_providers, $authentication_collector
    ->getSortedProviders());

  // Test AuthenticationCollector::getProvider() and
  // AuthenticationCollector::isGlobal().
  foreach ($sorted_providers as $provider) {
    $this
      ->assertEquals($provider, $authentication_collector
      ->getProvider($provider->providerId));
    $this
      ->assertEquals($global[$provider->providerId], $authentication_collector
      ->isGlobal($provider->providerId));
  }
}