Skip to content

Commit d5010b7

Browse files
authored
AccessResult stubs (#573)
1 parent 56d8262 commit d5010b7

File tree

7 files changed

+94
-0
lines changed

7 files changed

+94
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Drupal\Core\Access;
4+
5+
use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
6+
7+
abstract class AccessResult implements AccessResultInterface, RefinableCacheableDependencyInterface {
8+
9+
/**
10+
* @return ($condition is true ? \Drupal\Core\Access\AccessResultAllowed : \Drupal\Core\Access\AccessResultNeutral)
11+
*/
12+
public static function allowedIf(bool $condition) {
13+
}
14+
15+
/**
16+
* @return ($condition is true ? \Drupal\Core\Access\AccessResultForbidden : \Drupal\Core\Access\AccessResultNeutral)
17+
*/
18+
public static function forbiddenIf(bool $condition, ?string $reason = NULL) {
19+
}
20+
21+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
3+
namespace Drupal\Core\Access;
4+
5+
class AccessResultAllowed extends AccessResult {
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Drupal\Core\Access;
4+
5+
class AccessResultForbidden extends AccessResult implements AccessResultReasonInterface {
6+
7+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
3+
namespace Drupal\Core\Access;
4+
5+
class AccessResultNeutral extends AccessResult implements AccessResultReasonInterface {
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
3+
namespace Drupal\Core\Access;
4+
5+
interface AccessResultReasonInterface extends AccessResultInterface {
6+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace mglaman\PHPStanDrupal\Tests\Type;
6+
7+
use mglaman\PHPStanDrupal\Tests\AdditionalConfigFilesTrait;
8+
use PHPStan\Testing\TypeInferenceTestCase;
9+
10+
final class AccessResultTypeTest extends TypeInferenceTestCase
11+
{
12+
use AdditionalConfigFilesTrait;
13+
14+
public function dataFileAsserts(): iterable
15+
{
16+
yield from self::gatherAssertTypes(__DIR__ . '/data/access-result.php');
17+
}
18+
19+
/**
20+
* @dataProvider dataFileAsserts
21+
* @param string $assertType
22+
* @param string $file
23+
* @param mixed ...$args
24+
*/
25+
public function testFileAsserts(
26+
string $assertType,
27+
string $file,
28+
...$args
29+
): void
30+
{
31+
$this->assertFileAsserts($assertType, $file, ...$args);
32+
}
33+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace AccessResultType;
4+
5+
use Drupal\Core\Access\AccessResult;
6+
use Drupal\Core\Access\AccessResultAllowed;
7+
use Drupal\Core\Access\AccessResultForbidden;
8+
use Drupal\Core\Access\AccessResultNeutral;
9+
use function PHPStan\Testing\assertType;
10+
11+
assertType(AccessResultAllowed::class, AccessResult::allowedIf(true));
12+
assertType(AccessResultNeutral::class, AccessResult::allowedIf(false));
13+
14+
assertType(AccessResultForbidden::class, AccessResult::forbiddenIf(true));
15+
assertType(AccessResultNeutral::class, AccessResult::forbiddenIf(false));

0 commit comments

Comments
 (0)