Files
api/services/nginx/app/tests/Integration/Database/DbConnectionTest.php
T

45 lines
1.2 KiB
PHP

<?php
use classes\db;
it('can connect to a configured MySQL instance in integration mode', function (): void {
if (!integration_enabled()) {
test()->markTestSkipped('Set RUN_INTEGRATION_TESTS=1 to run DB integration tests.');
}
$host = getenv('CONFIG_DB_HOST') ?: null;
$user = getenv('CONFIG_DB_USER') ?: null;
$password = getenv('CONFIG_DB_PASSWORD') ?: '';
$database = getenv('CONFIG_DB_DATABASE') ?: null;
$port = getenv('CONFIG_DB_PORT') ?: 3306;
if (!$host || !$user || !$database) {
test()->markTestSkipped('Missing DB env vars: CONFIG_DB_HOST/CONFIG_DB_USER/CONFIG_DB_DATABASE.');
}
app_require('classes/db.php');
$GLOBALS['response'] = new class {
public function internal_server_error(string $message): void
{
throw new RuntimeException($message);
}
};
$db = new db([
'host' => $host,
'user' => $user,
'password' => $password,
'database' => $database,
'port' => $port,
]);
$db->connect();
expect($db->conn())->toBeInstanceOf(mysqli::class);
expect($db->conn()->connect_errno)->toBe(0);
$db->close();
});