. */ declare(strict_types=1); namespace Tests\Unit\Helpers; use FireflyIII\Http\Middleware\IsAdmin; use Route; use Symfony\Component\HttpFoundation\Response; use Tests\TestCase; /** * Class IsAdminTest */ class IsAdminTest extends TestCase { /** * @covers \FireflyIII\Http\Middleware\IsAdmin::handle */ public function testMiddleware() { $this->withoutExceptionHandling(); $response = $this->get('/_test/is-admin'); $this->assertEquals(Response::HTTP_FOUND, $response->getStatusCode()); $response->assertRedirect(route('login')); } /** * @covers \FireflyIII\Http\Middleware\IsAdmin::handle */ public function testMiddlewareAjax() { $server = ['HTTP_X-Requested-With' => 'XMLHttpRequest']; $this->withoutExceptionHandling(); $response = $this->get('/_test/is-admin', $server); $this->assertEquals(Response::HTTP_UNAUTHORIZED, $response->getStatusCode()); } /** * @covers \FireflyIII\Http\Middleware\IsAdmin::handle */ public function testMiddlewareOwner() { $this->be($this->user()); $this->withoutExceptionHandling(); $response = $this->get('/_test/is-admin'); $this->assertEquals(Response::HTTP_OK, $response->getStatusCode()); } /** * @covers \FireflyIII\Http\Middleware\IsAdmin::handle */ public function testMiddlewareNotOwner() { $this->withoutExceptionHandling(); $this->be($this->emptyUser()); $response = $this->get('/_test/is-admin'); $this->assertEquals(Response::HTTP_FOUND, $response->getStatusCode()); $response->assertRedirect(route('home')); } /** * Set up test */ protected function setUp() { parent::setUp(); Route::middleware(IsAdmin::class)->any( '/_test/is-admin', function () { return 'OK'; } ); } }