2FAuth/tests/Feature/RouteTest.php

69 lines
2.0 KiB
PHP
Raw Normal View History

2020-03-02 17:11:17 +01:00
<?php
2021-11-22 01:09:54 +01:00
namespace Tests\Feature;
2020-03-02 17:11:17 +01:00
use App\Providers\RouteServiceProvider;
2024-07-06 16:05:04 +02:00
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Route;
2024-09-26 23:50:01 +02:00
use Illuminate\Support\Str;
2024-07-03 11:16:08 +02:00
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Test;
2021-11-22 01:09:54 +01:00
use Tests\FeatureTestCase;
2020-03-02 17:11:17 +01:00
2024-07-03 11:16:08 +02:00
#[CoversClass(RouteServiceProvider::class)]
2021-11-22 01:09:54 +01:00
class RouteTest extends FeatureTestCase
2020-03-02 17:11:17 +01:00
{
const API_ROUTE_PREFIX = 'api/v1';
2024-09-26 23:50:01 +02:00
const API_MIDDLEWARE = 'api.v1';
#[Test]
2021-11-22 01:09:54 +01:00
public function test_exception_handler_with_web_route()
2020-03-08 20:16:56 +01:00
{
$response = $this->post('/');
$response->assertStatus(405);
}
#[Test]
public function test_all_api_routes_are_behind_apiv1_middleware()
{
2024-07-06 16:05:04 +02:00
Artisan::call('route:cache');
$this->get('/');
$routes = Route::getRoutes();
foreach ($routes as $route) {
if (Str::startsWith($route->uri(), self::API_ROUTE_PREFIX)) {
2024-09-25 08:37:37 +02:00
// Route middlewares can be set via action or controllers.
// Using $route->middleware() fetches middlewares from action only.
// Route::gatherRouteMiddleware($route) would have fetch middlewares from
// both action & controllers but the "Route is not bound" exception is thrown then.
// $route->middleware() is acceptable as no middleware is set from controllers in 2FAuth.
$this->assertEquals(self::API_ROUTE_PREFIX, $route->getPrefix());
2024-09-25 08:37:37 +02:00
$this->assertTrue(in_array(self::API_MIDDLEWARE, $route->middleware()));
}
}
}
#[Test]
#[DataProvider('wherePatternProvider')]
public function test_router_has_expected_global_where_patterns($pattern)
{
$patterns = Route::getPatterns();
$this->assertArrayHasKey($pattern, $patterns);
}
/**
* Provide data for tests
*/
public static function wherePatternProvider()
{
return [
2024-09-26 23:50:01 +02:00
'SETTING_NAME' => ['settingName'],
];
}
2022-11-22 15:15:52 +01:00
}