function AccessResultTest::testAndIf

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Access/AccessResultTest.php \Drupal\Tests\Core\Access\AccessResultTest::testAndIf()
  2. 8.9.x core/tests/Drupal/Tests/Core/Access/AccessResultTest.php \Drupal\Tests\Core\Access\AccessResultTest::testAndIf()
  3. 11.x core/tests/Drupal/Tests/Core/Access/AccessResultTest.php \Drupal\Tests\Core\Access\AccessResultTest::testAndIf()

@covers ::andIf

File

core/tests/Drupal/Tests/Core/Access/AccessResultTest.php, line 179

Class

AccessResultTest
@coversDefaultClass \Drupal\Core\Access\AccessResult[[api-linebreak]] @group Access

Namespace

Drupal\Tests\Core\Access

Code

public function testAndIf() : void {
  $neutral = AccessResult::neutral('neutral message');
  $allowed = AccessResult::allowed();
  $forbidden = AccessResult::forbidden('forbidden message');
  $unused_access_result_due_to_lazy_evaluation = $this->createMock('\\Drupal\\Core\\Access\\AccessResultInterface');
  $unused_access_result_due_to_lazy_evaluation->expects($this->never())
    ->method($this->anything());
  // ALLOWED && ALLOWED === ALLOWED.
  $access = $allowed->andIf($allowed);
  $this->assertTrue($access->isAllowed());
  $this->assertFalse($access->isForbidden());
  $this->assertFalse($access->isNeutral());
  $this->assertDefaultCacheability($access);
  // ALLOWED && NEUTRAL === NEUTRAL.
  $access = $allowed->andIf($neutral);
  $this->assertFalse($access->isAllowed());
  $this->assertFalse($access->isForbidden());
  $this->assertTrue($access->isNeutral());
  $this->assertEquals('neutral message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // ALLOWED && FORBIDDEN === FORBIDDEN.
  $access = $allowed->andIf($forbidden);
  $this->assertFalse($access->isAllowed());
  $this->assertTrue($access->isForbidden());
  $this->assertFalse($access->isNeutral());
  $this->assertEquals('forbidden message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // NEUTRAL && ALLOW == NEUTRAL
  $access = $neutral->andIf($allowed);
  $this->assertFalse($access->isAllowed());
  $this->assertFalse($access->isForbidden());
  $this->assertTrue($access->isNeutral());
  $this->assertEquals('neutral message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // NEUTRAL && NEUTRAL === NEUTRAL.
  $access = $neutral->andIf($neutral);
  $this->assertFalse($access->isAllowed());
  $this->assertFalse($access->isForbidden());
  $this->assertTrue($access->isNeutral());
  $this->assertEquals('neutral message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // NEUTRAL && FORBIDDEN === FORBIDDEN.
  $access = $neutral->andIf($forbidden);
  $this->assertFalse($access->isAllowed());
  $this->assertTrue($access->isForbidden());
  $this->assertFalse($access->isNeutral());
  $this->assertEquals('forbidden message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // FORBIDDEN && ALLOWED = FORBIDDEN
  $access = $forbidden->andIf($allowed);
  $this->assertFalse($access->isAllowed());
  $this->assertTrue($access->isForbidden());
  $this->assertFalse($access->isNeutral());
  $this->assertEquals('forbidden message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // FORBIDDEN && NEUTRAL = FORBIDDEN
  $access = $forbidden->andIf($neutral);
  $this->assertFalse($access->isAllowed());
  $this->assertTrue($access->isForbidden());
  $this->assertFalse($access->isNeutral());
  $this->assertEquals('forbidden message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // FORBIDDEN && FORBIDDEN = FORBIDDEN
  $access = $forbidden->andIf($forbidden);
  $this->assertFalse($access->isAllowed());
  $this->assertTrue($access->isForbidden());
  $this->assertFalse($access->isNeutral());
  $this->assertEquals('forbidden message', $access->getReason());
  $this->assertDefaultCacheability($access);
  // FORBIDDEN && * === FORBIDDEN: lazy evaluation verification.
  $access = $forbidden->andIf($unused_access_result_due_to_lazy_evaluation);
  $this->assertFalse($access->isAllowed());
  $this->assertTrue($access->isForbidden());
  $this->assertFalse($access->isNeutral());
  $this->assertEquals('forbidden message', $access->getReason());
  $this->assertDefaultCacheability($access);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.