You are here

public function R4032LoginSubscriberTest::testAnonymousRedirect in Redirect 403 to User Login 8

Same name and namespace in other branches
  1. 2.x tests/src/Unit/R4032LoginSubscriberTest.php \Drupal\Tests\r4032login\Unit\R4032LoginSubscriberTest::testAnonymousRedirect()

Tests RedirectResponse for anonymous users.

@covers ::on403

@dataProvider providerRequests

Parameters

Request $request: The request object.

array $config_values: The configuration values.

string $expected_url: The expected target URL.

File

tests/src/Unit/R4032LoginSubscriberTest.php, line 138

Class

R4032LoginSubscriberTest
@coversDefaultClass \Drupal\r4032login\EventSubscriber\R4032LoginSubscriber @group r4032login

Namespace

Drupal\Tests\r4032login\Unit

Code

public function testAnonymousRedirect(Request $request, array $config_values, $expected_url) {
  $config = $this
    ->getConfigFactoryStub([
    'r4032login.settings' => $config_values,
  ]);
  $this->currentUser
    ->expects($this
    ->any())
    ->method('isAnonymous')
    ->willReturn(TRUE);
  $r4032login = new R4032LoginSubscriber($config, $this->currentUser, $this->requestStack, $this->pathMatcher, $this->eventDispatcher);
  $event = new GetResponseForExceptionEvent($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, new AccessDeniedHttpException());
  $dispatcher = new EventDispatcher();
  $dispatcher
    ->addListener(KernelEvents::EXCEPTION, [
    $r4032login,
    'on403',
  ]);
  $dispatcher
    ->dispatch(KernelEvents::EXCEPTION, $event);
  $response = $event
    ->getResponse();
  $this
    ->assertInstanceOf('\\Symfony\\Component\\HttpFoundation\\RedirectResponse', $response);
  $this
    ->assertEquals($config_values['default_redirect_code'], $response
    ->getStatusCode());
  $this
    ->assertEquals(Url::fromUserInput($config_values['user_login_path'])
    ->toString(), $response
    ->getTargetUrl());
}