def _apply_high_security_mode_fixups(cls, server_settings, local_settings): # When High Security Mode is True in local_settings, then all # security related settings should be removed from server_settings. # That way, when the local and server side configuration settings # are merged, the local security settings will not get overwritten # by the server side configuration settings. # # Note that security settings we may want to remove can appear at # both the top level of the server settings, but also nested within # the 'agent_config' sub dictionary. Those settings at the top level # represent how the settings were previously overridden for high # security mode. Those in 'agent_config' correspond to server side # configuration as set by the user. if not local_settings.high_security: return server_settings # Remove top-level 'high_security' setting. This will only exist # if it had been enabled server side. if "high_security" in server_settings: del server_settings["high_security"] # Remove individual security settings from top level of configuration # settings. for setting in cls.SECURITY_SETTINGS: if setting in server_settings: del server_settings[setting] # When server side configuration is disabled, there will be no # agent_config value in server_settings, so no more fix-ups # are required. if "agent_config" not in server_settings: return server_settings # Remove individual security settings from agent server side # configuration settings. agent_config = server_settings["agent_config"] for setting in cls.SECURITY_SETTINGS: if setting in agent_config: del server_settings["agent_config"][setting] _logger.info( "Ignoring server side configuration setting for " "%r, because High Security Mode has been activated. " "Using local setting %s=%r.", setting, setting, fetch_config_setting(local_settings, setting), ) return server_settings
def test_translate_deprecated_setting_without_old_setting(old, new): # Before: deprecated setting will *NOT* be in settings object. # new setting will be in settings object and have its value # # After: deprecated setting will still *NOT* be in settings object # new setting will still have its value (remain unchanged) settings = apply_server_side_settings() apply_config_setting(settings, new.name, new.value) assert old.name not in flatten_settings(settings) assert fetch_config_setting(settings, new.name) == new.value cached = [(new.name, new.value)] result = translate_deprecated_settings(settings, cached) assert result is settings assert old.name not in flatten_settings(result) assert fetch_config_setting(result, new.name) == new.value
def test_translate_deprecated_setting_without_new_setting(old, new): # Before: deprecated setting will be in settings object. # new setting will be in settings object and have default value # # After: deprecated setting will *NOT* be in settings object # new setting will have value of deprecated setting settings = apply_server_side_settings() apply_config_setting(settings, old.name, old.value) assert fetch_config_setting(settings, old.name) == old.value assert fetch_config_setting(settings, new.name) == new.default cached = [(old.name, old.value)] result = translate_deprecated_settings(settings, cached) assert result is settings assert old.name not in flatten_settings(result) assert fetch_config_setting(result, new.name) == old.value
def test_default_values(name, expected_value): settings = global_settings() value = fetch_config_setting(settings, name) assert value == expected_value