AdminOnlyMiddlewareTest.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace Tests\Feature\Http\Middlewares;
  3. use App\Http\Middleware\AdminOnly;
  4. use App\Models\User;
  5. use Illuminate\Auth\Access\AuthorizationException;
  6. use Illuminate\Http\Request;
  7. use PHPUnit\Framework\Attributes\CoversClass;
  8. use PHPUnit\Framework\Attributes\Test;
  9. use Tests\FeatureTestCase;
  10. #[CoversClass(AdminOnly::class)]
  11. class AdminOnlyMiddlewareTest extends FeatureTestCase
  12. {
  13. #[Test]
  14. public function test_users_are_rejected()
  15. {
  16. $this->expectException(AuthorizationException::class);
  17. /**
  18. * @var \App\Models\User|\Illuminate\Contracts\Auth\Authenticatable
  19. */
  20. $user = User::factory()->create();
  21. $this->actingAs($user);
  22. $request = Request::create('/admin', 'GET');
  23. $middleware = new AdminOnly;
  24. $response = $middleware->handle($request, function () {});
  25. }
  26. #[Test]
  27. public function test_admins_pass()
  28. {
  29. /**
  30. * @var \App\Models\User|\Illuminate\Contracts\Auth\Authenticatable
  31. */
  32. $admin = User::factory()->administrator()->create();
  33. $this->actingAs($admin);
  34. $request = Request::create('/admin', 'GET');
  35. $middleware = new AdminOnly;
  36. $response = $middleware->handle($request, function () {});
  37. $this->assertNull($response);
  38. }
  39. }