o11y-8.x-1.x-dev/modules/o11y_metrics/modules/o11y_metrics_token_access/tests/src/Unit/TokenAccessCheckTest.php

modules/o11y_metrics/modules/o11y_metrics_token_access/tests/src/Unit/TokenAccessCheckTest.php
<?php

namespace Drupal\Tests\o11y_metrics_token_access\Unit;

use Drupal\Core\Access\AccessResultAllowed;
use Drupal\Core\Access\AccessResultNeutral;
use Drupal\Core\Cache\Context\CacheContextsManager;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Config\ImmutableConfig;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\Routing\RouteMatch;
use Drupal\o11y_metrics_token_access\TokenAccessCheck;
use Drupal\Tests\UnitTestCase;
use Prophecy\Argument;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Route;

/**
 * @coversDefaultClass \Drupal\o11y_metrics_token_access\TokenAccessCheck
 *
 * @group o11y_metrics_token_access
 */
class TokenAccessCheckTest extends UnitTestCase {

  use \Prophecy\PhpUnit\ProphecyTrait;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    // Initialize Drupal container since the cache context manager is needed.
    $contexts_manager = $this->prophesize(CacheContextsManager::class);
    $contexts_manager->assertValidTokens(Argument::any())->willReturn(TRUE);
    $builder = new ContainerBuilder();
    $builder->set('cache_contexts_manager', $contexts_manager->reveal());
    \Drupal::setContainer($builder);
  }

  /**
   * Tests the access method.
   *
   * @covers ::access
   *
   * @dataProvider tokenAccessCheckProvider
   */
  public function testTokenAccessCheck($access_token, $query, $access_result) {
    $config_object = $this->prophesize(ImmutableConfig::class);
    $config_object->get('access_token')->willReturn($access_token);
    $config_object->getCacheContexts()->willReturn([]);
    $config_object->getCacheTags()->willReturn([]);
    $config_object->getCacheMaxAge()->willReturn(-1);
    $config_factory = $this->prophesize(ConfigFactoryInterface::class);
    $config_factory->get('o11y_metrics_token_access.settings')->willReturn($config_object);

    $request = new Request($query);
    $request_stack = $this->prophesize(RequestStack::class);
    $request_stack->getCurrentRequest()->willReturn($request);

    $access = new TokenAccessCheck($config_factory->reveal(), $request_stack->reveal());
    $this->assertInstanceOf($access_result, $access->access($this->prophesize(Route::class)->reveal(), $this->prophesize(RouteMatch::class)->reveal()));
  }

  /**
   * Data provider for testTokenAccessCheck().
   */
  public function tokenAccessCheckProvider() {
    return [
      [NULL, [], AccessResultAllowed::class],
      ['foo', ['token' => 'foo'], AccessResultAllowed::class],
      ['', ['token' => ''], AccessResultAllowed::class],
      [NULL, ['token' => ''], AccessResultNeutral::class],
      ['foo', ['token' => 'bar'], AccessResultNeutral::class],
      ['foo', [], AccessResultNeutral::class],
    ];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc