diff --git a/tests/integration/Api/About/AboutControllerTest.php b/tests/integration/Api/About/AboutControllerTest.php new file mode 100644 index 0000000000..b8897c224c --- /dev/null +++ b/tests/integration/Api/About/AboutControllerTest.php @@ -0,0 +1,78 @@ +. + */ + +declare(strict_types=1); + +namespace Tests\integration\Api\About; + +use Illuminate\Foundation\Testing\RefreshDatabase; +use Illuminate\Testing\Fluent\AssertableJson; +use Tests\integration\TestCase; + +/** + * Class AboutControllerTest + * + * @internal + * + * @coversNothing + */ +final class AboutControllerTest extends TestCase +{ + use RefreshDatabase; + private $user; + + public function setUp(): void + { + parent::setUp(); + + if (!isset($this->user)) + $this->user = $this->createAuthenticatedUser(); + $this->actingAs($this->user); + } + + public function testGivenAuthenticatedRequestReturnsSystemInformation(): void + { + $response = $this->getJson(route('api.v1.about.index')); + + $response->assertOk(); + $response->assertJsonStructure([ + 'data' => [ + 'version', + 'api_version', + 'php_version', + 'os', + 'driver' + ], + ]); + } + + public function testGivenAuthenticatedRequestReturnsUserInformation(): void + { + $response = $this->getJson(route('api.v1.about.user')); + + $response->assertOk(); + $response->assertJson(fn(AssertableJson $json) => + $json + ->where('data.attributes.email', $this->user->email) + ->where('data.attributes.role', $this->user->role) + ); + } +} diff --git a/tests/integration/TestCase.php b/tests/integration/TestCase.php index 793735a184..8cb0733095 100644 --- a/tests/integration/TestCase.php +++ b/tests/integration/TestCase.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace Tests\integration; +use FireflyIII\User; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; use Tests\integration\Traits\CollectsValues; @@ -48,4 +49,12 @@ abstract class TestCase extends BaseTestCase 'custom range' => ['custom'], ]; } + + protected function createAuthenticatedUser(): User + { + return User::create([ + 'email' => 'test@email.com', + 'password' => 'password', + ]); + } }