From 6ef0c46ffbbc2dabed330653df876aee88c2a8cd Mon Sep 17 00:00:00 2001 From: Andrii V Date: Fri, 8 Aug 2025 18:13:46 +0200 Subject: [PATCH] fix: invalidate request level cache on settings update instead of turning off cache for requests --- .../apps/admin/tests/test_admin_settings.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/rhodecode/apps/admin/tests/test_admin_settings.py b/rhodecode/apps/admin/tests/test_admin_settings.py index 738dc9ea..e5dbf606 100644 --- a/rhodecode/apps/admin/tests/test_admin_settings.py +++ b/rhodecode/apps/admin/tests/test_admin_settings.py @@ -315,43 +315,39 @@ class TestAdminSettingsVcs(object): setting = SettingsModel().get_setting_by_name(setting_key) assert setting.app_settings_value is new_value - def test_vcs_settings_cache_consistency(self, form_defaults, csrf_token): - """Test that VCS settings show fresh values after update (cache bug fix).""" + def test_vcs_settings_cache_invalidation(self, form_defaults, csrf_token): from rhodecode.apps.admin.views.settings import AdminSettingsView - # Test PR and diff cache settings that were affected by the cache bug + # Test settings that were bugged settings_to_test = { "pr_merge_enabled": False, "diff_cache": True, "auto_merge_enabled": False, } - # Also test UI setting for repository size hook + # Also test some UI setting for comparison, those worked fine ui_settings_to_test = { "hooks_changegroup_repo_size": True, } - # Update form with new values for regular settings + # Update form with new values for setting_key, new_value in settings_to_test.items(): form_defaults[f"rhodecode_{setting_key}"] = str(new_value).lower() - - # Update form with new values for UI settings for ui_key, new_value in ui_settings_to_test.items(): form_defaults[ui_key] = str(new_value).lower() form_defaults["csrf_token"] = csrf_token - # Submit the form - this should trigger proper cache invalidation + # Submit the form and follow redirect response = self.app.post(route_path("admin_settings_vcs_update"), params=form_defaults, status=302) - response = response.follow() + _ = response.follow() # Check db has correct values for setting_key, expected_value in settings_to_test.items(): setting = SettingsModel().get_setting_by_name(setting_key) assert setting.app_settings_value is expected_value - # Check form defaults should show fresh values (not cached stale ones) - # This tests that our cache invalidation properly clears both database and request cache + # Make sure cache invalidation clears both database and request cache fresh_defaults = AdminSettingsView._form_defaults() for setting_key, expected_value in settings_to_test.items(): form_key = f"rhodecode_{setting_key}"