versionPath; } } /** * La sonde expose la version deployee (SHA + date) pour prouver le CD : apres un * deploiement, GET /api/health doit refleter le nouveau commit. Le test n'a pas de * base : l'appel DB echoue et degrade le statut, mais les champs version restent * presents (ils sont independants de la BDD). */ final class HealthControllerTest extends TestCase { private function controller(string $versionPath): TestHealthController { $request = new Request('GET', '/api/health', [], [], '', '203.0.113.5'); $c = new TestHealthController($request, new Config(), new Database(new Config())); $c->versionPath = $versionPath; return $c; } public function testExposesDeployedVersionWhenFilePresent(): void { $fixture = tempnam(sys_get_temp_dir(), 'wakdo_version_'); file_put_contents($fixture, "3dee190 2026-06-23T14:02:11+02:00\n"); try { $body = $this->controller($fixture)->index()->body(); $payload = json_decode($body, true); self::assertSame('3dee190', $payload['version']); self::assertSame('2026-06-23T14:02:11+02:00', $payload['deployed_at']); } finally { @unlink($fixture); } } public function testVersionNullWhenFileAbsent(): void { $missing = sys_get_temp_dir() . '/wakdo_version_does_not_exist_' . getmypid(); @unlink($missing); $body = $this->controller($missing)->index()->body(); $payload = json_decode($body, true); self::assertNull($payload['version']); self::assertNull($payload['deployed_at']); } }