tmpFile = tempnam(sys_get_temp_dir(), 'status_'); file_put_contents($this->tmpFile, "Server1 1.2.3.4 online 2026-07-27 10:00\n"); $this->controller = new SystemController( new SystemRepository(Database::inMemory()), new LegacyStatusFileReader(), $this->tmpFile ); } protected function tearDown(): void { if (is_file($this->tmpFile)) { unlink($this->tmpFile); } } public function testIndexImportsLegacyStatusFile(): void { $response = $this->controller->index(Request::create('GET', '/api/v1/systems')); self::assertSame(200, $response->status); self::assertCount(1, $response->body()['systems']); self::assertSame('Server1', $response->body()['systems'][0]['id']); } public function testReportStatusRejectsInvalidStatus(): void { $response = $this->controller->reportStatus( Request::create('POST', '/api/v1/systems/srv1/status', body: ['status' => 'weird']), ['id' => 'srv1'] ); self::assertSame(422, $response->status); } public function testReportStatusReturnsUpdatedSystem(): void { $response = $this->controller->reportStatus( Request::create('POST', '/api/v1/systems/srv1/status', body: ['status' => 'ok']), ['id' => 'srv1'] ); self::assertSame(200, $response->status); self::assertSame('ok', $response->body()['system']['status']); } }