@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
// Local smoke-test router. Its database target is intentionally fixed to the
|
||||
// disposable PHPUnit database; do not reuse it for development or production.
|
||||
$root = dirname(__DIR__);
|
||||
$qaEnvironment = [
|
||||
'APP_ENV' => 'testing',
|
||||
'APP_DEBUG' => 'true',
|
||||
'DB_CONNECTION' => 'pgsql',
|
||||
'DB_HOST' => '127.0.0.1',
|
||||
'DB_PORT' => '55441',
|
||||
'DB_DATABASE' => 'investmoz_test',
|
||||
'DB_USERNAME' => 'investmoz_test',
|
||||
'DB_PASSWORD' => '',
|
||||
'DB_URL' => '',
|
||||
'QUEUE_CONNECTION' => 'sync',
|
||||
'SESSION_DRIVER' => 'array',
|
||||
'CACHE_STORE' => 'array',
|
||||
];
|
||||
|
||||
foreach ($qaEnvironment as $key => $value) {
|
||||
putenv($key.'='.$value);
|
||||
$_ENV[$key] = $value;
|
||||
$_SERVER[$key] = $value;
|
||||
}
|
||||
|
||||
$path = rawurldecode(parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH) ?: '/');
|
||||
$asset = $root.'/public'.$path;
|
||||
if ($path !== '/' && is_file($asset)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
require_once $root.'/vendor/autoload.php';
|
||||
$app = require $root.'/bootstrap/app.php';
|
||||
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
|
||||
// Keep QA on the checked-in build manifest; the developer Vite server may be
|
||||
// stale or backed by a different working copy and is never the QA frontend.
|
||||
Illuminate\Support\Facades\Vite::useHotFile($root.'/storage/framework/investmoz-qa-hot-file');
|
||||
$configuration = $app->make('config');
|
||||
$connectionName = $configuration->get('database.default');
|
||||
$connection = $configuration->get('database.connections.'.$connectionName, []);
|
||||
|
||||
// Fail before opening a connection if cached config or .env changes the target.
|
||||
if ($connectionName !== 'pgsql'
|
||||
|| ($connection['host'] ?? null) !== '127.0.0.1'
|
||||
|| (string) ($connection['port'] ?? '') !== '55441'
|
||||
|| ($connection['database'] ?? null) !== 'investmoz_test'
|
||||
|| ! in_array($connection['url'] ?? null, [null, ''], true)) {
|
||||
http_response_code(503);
|
||||
exit('QA database configuration did not match the fixed target.');
|
||||
}
|
||||
|
||||
$identity = $app->make('db')->connection($connectionName)->selectOne(
|
||||
'select current_database() as database, host(inet_server_addr()) as host, inet_server_port() as port',
|
||||
);
|
||||
if ($identity->database !== 'investmoz_test' || $identity->host !== '127.0.0.1' || (int) $identity->port !== 55441) {
|
||||
http_response_code(503);
|
||||
exit('Connected database did not match the fixed QA target.');
|
||||
}
|
||||
|
||||
header('X-Investmoz-QA-Target: '.$identity->database.':'.$identity->port);
|
||||
$app->handleRequest(Illuminate\Http\Request::capture());
|
||||
Reference in New Issue
Block a user