|
5 | 5 | namespace Hypervel\Tests\Sanctum; |
6 | 6 |
|
7 | 7 | use Hypervel\Sanctum\PersonalAccessToken; |
| 8 | +use Hypervel\Tests\Sanctum\Stub\TokenAbility; |
8 | 9 | use PHPUnit\Framework\TestCase; |
9 | 10 |
|
10 | 11 | /** |
@@ -33,4 +34,46 @@ public function testCanDetermineWhatItCanAndCantDo(): void |
33 | 34 | $this->assertTrue($token->can('foo')); |
34 | 35 | $this->assertTrue($token->can('bar')); |
35 | 36 | } |
| 37 | + |
| 38 | + public function testCanCheckAbilitiesWithBackedEnum(): void |
| 39 | + { |
| 40 | + $token = new PersonalAccessToken(); |
| 41 | + $token->abilities = ['posts:read', 'posts:write']; |
| 42 | + |
| 43 | + $this->assertTrue($token->can(TokenAbility::PostsRead)); |
| 44 | + $this->assertTrue($token->can(TokenAbility::PostsWrite)); |
| 45 | + $this->assertFalse($token->can(TokenAbility::UsersRead)); |
| 46 | + } |
| 47 | + |
| 48 | + public function testCantCheckAbilitiesWithBackedEnum(): void |
| 49 | + { |
| 50 | + $token = new PersonalAccessToken(); |
| 51 | + $token->abilities = ['posts:read']; |
| 52 | + |
| 53 | + $this->assertFalse($token->cant(TokenAbility::PostsRead)); |
| 54 | + $this->assertTrue($token->cant(TokenAbility::PostsWrite)); |
| 55 | + } |
| 56 | + |
| 57 | + public function testWildcardAbilityWorksWithBackedEnum(): void |
| 58 | + { |
| 59 | + $token = new PersonalAccessToken(); |
| 60 | + $token->abilities = ['*']; |
| 61 | + |
| 62 | + $this->assertTrue($token->can(TokenAbility::PostsRead)); |
| 63 | + $this->assertTrue($token->can(TokenAbility::PostsWrite)); |
| 64 | + $this->assertTrue($token->can(TokenAbility::UsersRead)); |
| 65 | + } |
| 66 | + |
| 67 | + public function testMixedStringAndEnumAbilitiesWork(): void |
| 68 | + { |
| 69 | + $token = new PersonalAccessToken(); |
| 70 | + $token->abilities = ['posts:read', 'legacy-ability']; |
| 71 | + |
| 72 | + // Enum check |
| 73 | + $this->assertTrue($token->can(TokenAbility::PostsRead)); |
| 74 | + // String check for same value |
| 75 | + $this->assertTrue($token->can('posts:read')); |
| 76 | + // String check for legacy |
| 77 | + $this->assertTrue($token->can('legacy-ability')); |
| 78 | + } |
36 | 79 | } |
0 commit comments