62 lines
1.9 KiB
PHP
62 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Http\Middleware;
|
|
|
|
use App\Http\Middleware\RedirectIfHitModuleSubscription;
|
|
use App\Http\Middleware\RedirectIfHitPlanLimits;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Route;
|
|
use PHPUnit\Framework\TestCase;
|
|
use RuntimeException;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class SystemSettingsCreateMiddlewareTest extends TestCase
|
|
{
|
|
public function test_system_settings_create_route_bypasses_plan_limits(): void
|
|
{
|
|
$middleware = new class extends RedirectIfHitPlanLimits
|
|
{
|
|
public function getUserLimitOfPlan(): object
|
|
{
|
|
throw new RuntimeException('系统设置不应检查云端套餐限制。');
|
|
}
|
|
};
|
|
|
|
$response = $middleware->handle(
|
|
$this->systemSettingsCreateRequest(),
|
|
fn () => new Response('next')
|
|
);
|
|
|
|
$this->assertSame('next', $response->getContent());
|
|
}
|
|
|
|
public function test_system_settings_create_route_bypasses_module_subscription(): void
|
|
{
|
|
$middleware = new class extends RedirectIfHitModuleSubscription
|
|
{
|
|
public function getModulesLimitOfSubscription(): object
|
|
{
|
|
throw new RuntimeException('系统设置不应检查云端模块订阅。');
|
|
}
|
|
};
|
|
|
|
$response = $middleware->handle(
|
|
$this->systemSettingsCreateRequest(),
|
|
fn () => new Response('next')
|
|
);
|
|
|
|
$this->assertSame('next', $response->getContent());
|
|
}
|
|
|
|
private function systemSettingsCreateRequest(): Request
|
|
{
|
|
$request = Request::create('/1/system-settings/databases/create', 'GET');
|
|
$route = new Route('GET', '{company_id}/system-settings/databases/create', fn () => null);
|
|
$route->name('system-settings.databases.create');
|
|
$route->bind($request);
|
|
$request->setRouteResolver(fn () => $route);
|
|
|
|
return $request;
|
|
}
|
|
}
|