ctrlpanel/tests/Feature/TestApiAuthorization.php
Shift 70208d2157
Apply Laravel coding style
Shift automatically applies the Laravel coding style - which uses the PSR-12 coding style as a base with some minor additions.

You may customize the code style applied by configuring [Pint](https://laravel.com/docs/pint), [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), or [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for your project root.

For more information on customizing the code style applied by Shift, [watch this short video](https://laravelshift.com/videos/shift-code-style).
2023-01-05 17:01:42 +00:00

83 lines
2.1 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\ApplicationApi;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Str;
use Tests\TestCase;
class TestApiAuthorization extends TestCase
{
use DatabaseTransactions;
/**
* A basic feature test example.
*
* @dataProvider ApiRoutesThatRequireAuthorization
*
* @return void
* @test
*/
public function test_api_route_without_auth_headers(string $method, string $route)
{
$response = $this->withHeaders([
'Accept' => 'application/json',
])->{$method}($route);
$response->assertStatus(403);
$response->assertJson(['message' => 'Missing Authorization header']);
}
/**
* A basic feature test example.
*
* @dataProvider ApiRoutesThatRequireAuthorization
*
* @return void
*/
public function test_api_route_with_auth_headers_but_invalid_token(string $method, string $route)
{
$response = $this->withHeaders([
'Accept' => 'application/json',
'Authorization' => 'Bearer '.Str::random(48),
])->{$method}($route);
$response->assertStatus(401);
$response->assertJson(['message' => 'Invalid Authorization token']);
}
/**
* A basic feature test example.
*
* @dataProvider ApiRoutesThatRequireAuthorization
*
* @return void
*/
public function test_api_route_with_valid_auth_headers(string $method, string $route)
{
$applicationApi = ApplicationApi::factory()->create();
$response = $this->withHeaders([
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$applicationApi->token,
])->{$method}($route);
$response->assertStatus(200);
}
public function ApiRoutesThatRequireAuthorization(): array
{
return [
'List Users' => [
'method' => 'get',
'route' => '/api/users',
],
'List Servers' => [
'method' => 'get',
'route' => '/api/servers',
],
];
}
}