ldc-arcadia-api/tests/Feature/Api/V1/Health/OracleHealthCheckTest.php

68 lines
2 KiB
PHP
Raw Permalink Normal View History

<?php
declare(strict_types=1);
namespace Tests\Feature\Api\V1\Health;
use Illuminate\Support\Facades\Config;
use Tests\TestCase;
describe('Oracle Health Check API (GET /api/v1/health/oracle)', function (): void {
$originalArcadiaDb = null;
beforeEach(function () use (&$originalArcadiaDb): void {
$originalArcadiaDb = Config::get('database.arcadia_meta_model');
});
afterEach(function () use (&$originalArcadiaDb): void {
Config::set('database.arcadia_meta_model', $originalArcadiaDb);
});
it('returns 200 healthy when oracle connectivity is operational', function (): void {
// GIVEN
/** @var TestCase $this */
Config::set('database.arcadia_meta_model', 'sqlite');
// WHEN
$response = $this->getJson('/api/v1/health/oracle');
// THEN
$response->assertStatus(200)
->assertJsonStructure([
'status',
'timestamp',
'oracle' => ['status', 'connection'],
])
->assertJson([
'status' => 'healthy',
'oracle' => ['status' => 'up'],
]);
});
it('returns 503 unhealthy when oracle connectivity fails', function () use (&$originalArcadiaDb): void {
// GIVEN
/** @var TestCase $this */
Config::set('database.connections.invalid_arcadia_connection', [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 65433,
'database' => 'invalid_arcadia_db',
]);
Config::set('database.arcadia_meta_model', 'invalid_arcadia_connection');
try {
// WHEN
$response = $this->getJson('/api/v1/health/oracle');
// THEN
$response->assertStatus(503)
->assertJson([
'status' => 'unhealthy',
'oracle' => ['status' => 'down'],
]);
} finally {
Config::set('database.arcadia_meta_model', $originalArcadiaDb);
}
});
});