assertSame($expected, SuperAdminProgramSettingsOverlay::SUPERADMIN_OWNED_KEYS); $this->assertCount(15, SuperAdminProgramSettingsOverlay::SUPERADMIN_OWNED_KEYS); } public function test_overlay_keeps_only_access_keys(): void { $map = SuperAdminProgramSettingsOverlay::ownedItemsMap([ ['key' => 'enable_automation', 'value' => 'true'], ['key' => 'jibit_enabled', 'value' => 'false'], ['key' => 'price_provider', 'value' => 'zaarbox'], ['key' => 'show_last_price', 'value' => 'false'], ['key' => 'close_price', 'value' => 'true'], ['key' => 'startDay', 'value' => '11:00'], ['key' => 'endDay', 'value' => '20:30'], ['key' => 'name_fa', 'value' => 'طلا'], ['key' => 'montzar_live_price', 'value' => '168000000'], ['key' => 'tracking_systems', 'value' => '[]'], ['key' => '', 'value' => 'x'], 'not-an-array', ]); $this->assertSame(['enable_automation', 'jibit_enabled'], array_keys($map)); $this->assertSame('true', $map['enable_automation']['value']); $this->assertArrayNotHasKey('price_provider', $map); $this->assertArrayNotHasKey('show_last_price', $map); } public function test_tenant_keys_are_never_superadmin_owned(): void { $tenantKeys = array_merge( ConfigService::TRADING_HOURS_CLIENT_KEYS, SuperAdminProgramSettingsOverlay::RUNTIME_KEYS, SuperAdminProgramSettingsOverlay::LOCAL_OWNED_KEYS, [ 'price_provider', 'zaarbox_price_key', 'montzar_base_url', 'name_fa', 'name_en', ] ); foreach ($tenantKeys as $key) { $this->assertFalse( SuperAdminProgramSettingsOverlay::isSuperAdminOwned($key), "{$key} نباید از سوپرادمین خوانده شود" ); } } }