You are here

public function AuthcacheP13nTestFragmentBuilder::testFragmentBuilderAccessChecker in Authenticated User Page Caching (Authcache) 7.2

Test request with access checker.

File

modules/authcache_p13n/tests/authcache_p13n.request-handler.test, line 423
Define unit tests for request handler.

Class

AuthcacheP13nTestFragmentBuilder
Tests fragment builder.

Code

public function testFragmentBuilderAccessChecker() {
  global $user;
  $orig_user = $user;
  $fake_user = (object) array(
    'uid' => 42,
    'mail' => 'fake@example.com',
    'name' => 'fake',
  );
  $context = array(
    'some' => 'context',
  );

  // Setup expectations.
  $check = $this->stubObserver
    ->method($this->fragmentAccess, 'check', TRUE)
    ->expect(AuthcacheP13nTestStubVerifyer::once())
    ->expect(AuthcacheP13nTestStubVerifyer::args(array(
    $fake_user,
    'some_key',
    'some_subject',
    $context,
  )));
  $render = $this->stubObserver
    ->method($this->fragmentRenderer, 'render', 'rendered')
    ->expect(AuthcacheP13nTestStubVerifyer::once())
    ->expect(AuthcacheP13nTestStubVerifyer::args(array(
    'some_key',
    'some_subject',
    $context,
  )));

  // Run builder.
  $user = $fake_user;
  $input = array(
    'a' => array(
      'some_key' => 'some_subject',
    ),
  );
  $builder = new AuthcacheP13nFragmentBuilder($this->fragmentRenderer, NULL, NULL, $this->fragmentAccess);
  $result = $builder
    ->build($input, $context);
  $user = $orig_user;

  // Verify stub.
  $this
    ->assertEqual('rendered', $result);
  $this
    ->assert($check
    ->verify($message), $message);
  $this
    ->assert($render
    ->verify($message), $message);

  // Setup expectations.
  $check = $this->stubObserver
    ->method($this->fragmentAccess, 'check', FALSE)
    ->expect(AuthcacheP13nTestStubVerifyer::once())
    ->expect(AuthcacheP13nTestStubVerifyer::args(array(
    $fake_user,
    'some_key',
    'some_subject',
    $context,
  )));
  $render = $this->stubObserver
    ->method($this->fragmentRenderer, 'render')
    ->expect(AuthcacheP13nTestStubVerifyer::never());

  // Run builder.
  $user = $fake_user;
  $input = array(
    'a' => array(
      'some_key' => 'some_subject',
    ),
  );
  $builder = new AuthcacheP13nFragmentBuilder($this->fragmentRenderer, NULL, NULL, $this->fragmentAccess);
  try {
    $builder
      ->build($input, $context);
    $this
      ->fail('AuthcacheP13nFragmentBuilder should throw an AuthcacheP13nRequestAccessDenied when access check fails');
  } catch (AuthcacheP13nRequestAccessDenied $e) {
    unset($e);
    $this
      ->pass('AuthcacheP13nFragmentBuilder should throw an AuthcacheP13nRequestAccessDenied when access check fails');
  }
  $user = $orig_user;

  // Verify stub.
  $this
    ->assert($check
    ->verify($message), $message);
  $this
    ->assert($render
    ->verify($message), $message);
}