You are here

public function ActiveLinkResponseFilterTest::testSkipCertainResponseTypes in Drupal 10

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php \Drupal\Tests\Core\EventSubscriber\ActiveLinkResponseFilterTest::testSkipCertainResponseTypes()
  2. 9 core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php \Drupal\Tests\Core\EventSubscriber\ActiveLinkResponseFilterTest::testSkipCertainResponseTypes()

Tests certain response types ignored by the ActiveLinkResponseFilter.

@covers ::onResponse

File

core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php, line 458

Class

ActiveLinkResponseFilterTest
@coversDefaultClass \Drupal\Core\EventSubscriber\ActiveLinkResponseFilter @group EventSubscriber

Namespace

Drupal\Tests\Core\EventSubscriber

Code

public function testSkipCertainResponseTypes() {
  $session = new AnonymousUserSession();
  $language_manager = new LanguageManager(new LanguageDefault([]));
  $request_stack = new RequestStack();
  $request_stack
    ->push(new Request());
  $current_path_stack = new CurrentPathStack($request_stack);

  // Ensure path matcher is not called. This also tests that the
  // ActiveLinkResponseFilter ignores the response.
  $path_matcher = $this
    ->prophesize(PathMatcherInterface::class);
  $path_matcher
    ->isFrontPage()
    ->shouldNotBeCalled();
  $subscriber = new ActiveLinkResponseFilter($session, $current_path_stack, $path_matcher
    ->reveal(), $language_manager);

  // Test BinaryFileResponse is ignored. Calling setContent() would throw a
  // logic exception.
  $response = new BinaryFileResponse(__FILE__, 200, [
    'Content-Type' => 'text/html',
  ]);
  $subscriber
    ->onResponse(new ResponseEvent($this
    ->prophesize(KernelInterface::class)
    ->reveal(), $request_stack
    ->getCurrentRequest(), HttpKernelInterface::MAIN_REQUEST, $response));

  // Test StreamedResponse is ignored. Calling setContent() would throw a
  // logic exception.
  $response = new StreamedResponse(function () {
    echo 'Success!';
  }, 200, [
    'Content-Type' => 'text/html',
  ]);
  $subscriber
    ->onResponse(new ResponseEvent($this
    ->prophesize(KernelInterface::class)
    ->reveal(), $request_stack
    ->getCurrentRequest(), HttpKernelInterface::MAIN_REQUEST, $response));
}