- Extract ModuleManifestLoader for standalone manifest loading (used by module-deactivate and ValidateCommand) - Extract SqlStatementParser, ModuleMigrationRepository, and ModuleMigrationService from bin/module-migrate.php to enforce strict layering (SQL in repository, orchestration in service) - Delete bin/scheduler-run.php (fully superseded by bin/console scheduler:run) - Update docs and test fixtures to reference bin/console Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
1.4 KiB
PHP
54 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace MintyPHP\Tests\Http;
|
|
|
|
use MintyPHP\Http\RequestContext;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class RequestContextTest extends TestCase
|
|
{
|
|
private array $serverBackup = [];
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$this->serverBackup = $_SERVER;
|
|
RequestContext::resetForTests();
|
|
}
|
|
|
|
protected function tearDown(): void
|
|
{
|
|
$_SERVER = $this->serverBackup;
|
|
RequestContext::resetForTests();
|
|
}
|
|
|
|
public function testItGeneratesStableRequestIdPerRequest(): void
|
|
{
|
|
$_SERVER['REQUEST_METHOD'] = 'GET';
|
|
$_SERVER['REQUEST_URI'] = '/admin/users?x=1';
|
|
|
|
RequestContext::start();
|
|
$first = RequestContext::id();
|
|
$second = RequestContext::id();
|
|
|
|
$this->assertSame($first, $second);
|
|
$this->assertMatchesRegularExpression('/^[a-f0-9-]{36}$/', $first);
|
|
}
|
|
|
|
public function testItAppliesOverridesForChannelAndPath(): void
|
|
{
|
|
$_SERVER['REQUEST_METHOD'] = 'POST';
|
|
$_SERVER['REQUEST_URI'] = '/admin/settings';
|
|
|
|
RequestContext::start([
|
|
'channel' => 'scheduler',
|
|
'path' => 'bin/console',
|
|
]);
|
|
|
|
$context = RequestContext::context();
|
|
|
|
$this->assertSame('scheduler', $context['channel']);
|
|
$this->assertSame('bin/console', $context['path']);
|
|
$this->assertSame('POST', $context['method']);
|
|
}
|
|
}
|