rSettingsBackup = $GLOBALS['rSettings'] ?? null; $this->rSchemeBackup = $_SERVER['REQUEST_SCHEME'] ?? null; $GLOBALS['rSettings'] = ['live_streaming_pass' => 'x']; $this->db = new TestDb(); $this->db->exec( 'CREATE TABLE servers (id INTEGER PRIMARY KEY, server_type INTEGER, is_main INTEGER, enabled INTEGER, status INTEGER, last_check_ago INTEGER, parent_id TEXT, domain_name TEXT, server_ip TEXT, private_ip TEXT, enable_https INTEGER, http_broadcast_port INTEGER, https_broadcast_port INTEGER, rtmp_port INTEGER, geoip_countries TEXT, isp_names TEXT, watchdog_data TEXT, php_pids TEXT, `order` INTEGER);' ); $this->db->query( 'INSERT INTO servers (id, server_type, is_main, enabled, status, last_check_ago, parent_id, domain_name, server_ip, private_ip, enable_https, http_broadcast_port, https_broadcast_port, rtmp_port, geoip_countries, isp_names, watchdog_data, php_pids, `order`) VALUES (7, 0, 0, 1, 1, ?, NULL, "", "10.0.0.7", "", 0, 80, 443, 8880, "", "", "{}", "[11,12]", 0), (8, 1, 0, 1, 1, ?, "[7]", "", "10.0.0.8", "", 0, 80, 443, 8880, "", "", "{}", "[21]", 0);', time(), time() ); ServerRepository::setDb($this->db); } protected function tearDown(): void { FileCache::delCache('servers'); (new ReflectionProperty(ServerRepository::class, 'db'))->setValue(null, null); $GLOBALS['rSettings'] = $this->rSettingsBackup; if ($this->rSchemeBackup === null) { unset($_SERVER['REQUEST_SCHEME']); } else { $_SERVER['REQUEST_SCHEME'] = $this->rSchemeBackup; } } public function testReturnedRowsCarryNoPhpPids(): void { $rServers = ServerRepository::getAll(true); $this->assertArrayHasKey(7, $rServers); $this->assertSame('10.0.0.7', $rServers[7]['server_ip'], 'the row itself is still loaded'); $this->assertArrayNotHasKey('php_pids', $rServers[7]); } public function testCachedRowsCarryNoPhpPids(): void { ServerRepository::getAll(true); $rCache = FileCache::getCache('servers'); $this->assertIsArray($rCache); $this->assertArrayHasKey(7, $rCache); $this->assertArrayNotHasKey('php_pids', $rCache[7]); } public function testSimpleReadersCarryNoPhpPids(): void { $rAll = ServerRepository::getAllSimple(); $rStreaming = ServerRepository::getStreamingSimple(null, 'all'); $rProxies = ServerRepository::getProxySimple(); $this->assertSame([7, 8], array_keys($rAll)); $this->assertArrayNotHasKey('php_pids', $rAll[7]); $this->assertArrayNotHasKey('php_pids', $rAll[8]); $this->assertSame([7], array_keys($rStreaming)); $this->assertArrayNotHasKey('php_pids', $rStreaming[7]); $this->assertSame([8], array_keys($rProxies)); $this->assertArrayNotHasKey('php_pids', $rProxies[8]); } public function testAdminApiServerCarriesNoPhpPids(): void { $rResult = AdminAPIWrapper::getServer(7); $this->assertSame('STATUS_SUCCESS', $rResult['status']); $this->assertSame('10.0.0.7', $rResult['data']['server_ip']); $this->assertArrayNotHasKey('php_pids', $rResult['data']); } public function testGetByIdKeepsTheFullRow(): void { $this->assertSame('[11,12]', ServerRepository::getById(7)['php_pids']); } }