codebergApiBase()); self::assertSame([ ['owner' => 'fds2610', 'repo' => 'monitor', 'color' => '#fbca04'], ['owner' => 'fds2610', 'repo' => 'Steuerkram', 'color' => '#28a745'], ['owner' => 'fds2610', 'repo' => 'nc-gantt', 'color' => '#0366d6'], ], $config->codebergRepos()); self::assertNull($config->codebergToken()); self::assertNull($config->adminApiKey()); self::assertSame(8, $config->deskCount()); self::assertSame(30, $config->sseMaxIterations()); self::assertSame(2, $config->ssePollIntervalSeconds()); } /** * Regression: get() griff frueher selbst auf getenv() zurueck, wodurch ein in der * Umgebung gesetzter CODEBERG_TOKEN in eine explizit gebaute Config (und damit in * Testausgaben) durchschlug. */ public function testExplicitEnvArrayDoesNotFallBackToProcessEnvironment(): void { putenv('CODEBERG_TOKEN=darf-nicht-durchsickern'); try { self::assertNull((new Config([]))->codebergToken()); } finally { putenv('CODEBERG_TOKEN'); } } public function testValuesCanBeOverridden(): void { $config = new Config([ 'CODEBERG_API_BASE' => 'https://example.org/api/v1/', 'CODEBERG_REPOS' => 'someone/somerepo:ff00aa, other/thing:00ff00 ,malformed', 'CODEBERG_TOKEN' => 'tok', 'MONITOR_ADMIN_API_KEY' => 'secret', 'MONITOR_DESK_COUNT' => '3', 'MONITOR_SSE_MAX_ITERATIONS' => '5', 'MONITOR_SSE_POLL_INTERVAL' => '1', ]); self::assertSame('https://example.org/api/v1', $config->codebergApiBase()); self::assertSame([ ['owner' => 'someone', 'repo' => 'somerepo', 'color' => '#ff00aa'], ['owner' => 'other', 'repo' => 'thing', 'color' => '#00ff00'], ], $config->codebergRepos()); self::assertSame('tok', $config->codebergToken()); self::assertSame('secret', $config->adminApiKey()); self::assertSame(3, $config->deskCount()); self::assertSame(5, $config->sseMaxIterations()); self::assertSame(1, $config->ssePollIntervalSeconds()); } public function testCodebergReposFallsBackToDefaultsWhenOverrideIsUnusable(): void { $config = new Config(['CODEBERG_REPOS' => 'nur-ein-slug-ohne-doppelpunkt']); self::assertSame([ ['owner' => 'fds2610', 'repo' => 'monitor', 'color' => '#fbca04'], ['owner' => 'fds2610', 'repo' => 'Steuerkram', 'color' => '#28a745'], ['owner' => 'fds2610', 'repo' => 'nc-gantt', 'color' => '#0366d6'], ], $config->codebergRepos()); } }