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