def test_should_use_s3_reader_with_prefix_with_simple_settings( self, bucket_name, region, s3 ): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={ 'DYNAMIC_SETTINGS': { 'backend': 's3', 'bucket_name': bucket_name, 'region': region, 'prefix': 'MYAPP_' } } ) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' self._set_value_on_s3( s3, bucket_name, 'MYAPP_SIMPLE_STRING', 'dynamic' ) assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert ( self._get_value_from_s3(s3, bucket_name, 'MYAPP_SIMPLE_STRING') == 'foo' )
def get_settings_by_environment(module_name): settings = LazySettings() mock_dict = {key: module_name for key in LazySettings.ENVIRON_KEYS} with patch.dict('os.environ', mock_dict): settings.setup() return settings
def get_settings_by_cmd_line(module_name): settings = LazySettings() with patch.object(sys, 'argv', ['', '--settings={}'.format(module_name)]): settings.setup() return settings
def test_should_update_settings_in_dynamic_storage(self, settings_dict): settings = LazySettings('tests.samples.dynamic') settings.configure(**settings_dict) settings.setup() settings._dynamic_reader.set('SIMPLE_STRING', 'simple') settings.configure(SIMPLE_STRING='dynamic') assert settings.SIMPLE_STRING == 'dynamic' assert settings._dynamic_reader.get('SIMPLE_STRING') == 'dynamic'
def get_settings_by_environment(module_name): settings = LazySettings() mock_dict = { key: module_name for key in LazySettings.ENVIRON_KEYS } with patch.dict('os.environ', mock_dict): settings.setup() return settings
def test_should_read_environment_settings_value(self, env_var): expect_module = 'tests.samples.complex' settings = LazySettings() with patch.object(sys, 'argv', []): with patch.dict('os.environ', {env_var: expect_module}): settings.setup() assert settings._settings_list == [expect_module]
def test_should_read_cmd_line_settings_value(self, cmd_arg): expect_module = 'tests.samples.simple' settings = LazySettings() with patch.object(sys, 'argv', ['', '{}={}'.format(cmd_arg, expect_module)]): settings.setup() assert settings._settings_list == [expect_module]
def get_settings_by_cmd_line(module_name): settings = LazySettings() with patch.object( sys, 'argv', ['', '--settings={}'.format(module_name)] ): settings.setup() return settings
def test_should_override_setting_by_reader_value(self, settings_dict): settings = LazySettings('tests.samples.simple') settings.configure(**settings_dict) settings._initialized = False # to load dynamic read settings.setup() assert settings.SIMPLE_STRING == 'simple' settings._dynamic_reader.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic'
def test_should_update_settings_in_dynamic_storage(self, settings_dict): settings = LazySettings('tests.samples.dynamic') settings.configure(**settings_dict) settings._initialized = False # to load dynamic read settings.setup() settings._dynamic_reader.set('SIMPLE_STRING', 'simple') settings.configure(SIMPLE_STRING='dynamic') assert settings.SIMPLE_STRING == 'dynamic' assert settings._dynamic_reader.get('SIMPLE_STRING') == 'dynamic'
def test_should_read_cmd_line_settings_value(self, cmd_arg): expect_module = 'tests.samples.simple' settings = LazySettings() with patch.object( sys, 'argv', ['', '{}={}'.format(cmd_arg, expect_module)] ): settings.setup() assert settings._settings_list == [expect_module]
def test_dont_overwrite_special_settings_with_environ(self): expect_module = 'tests.samples.special' settings = LazySettings() with patch.object(sys, 'argv', []): with patch.dict('os.environ', {SPECIAL_SETTINGS_KEY: expect_module}): settings.setup() print(settings.as_dict()) assert isinstance(getattr(settings, SPECIAL_SETTINGS_KEY), dict)
def test_should_return_a_zero_value_by_reader_value( self, settings_dict, value): settings = LazySettings('tests.samples.simple') settings.configure(**settings_dict) settings._initialized = False # to load dynamic read settings.setup() assert settings.SIMPLE_STRING == 'simple' settings._dynamic_reader.set('SIMPLE_STRING', value) assert settings.SIMPLE_STRING == value
def test_should_return_a_zero_value_by_reader_value( self, settings_dict, value ): settings = LazySettings('tests.samples.simple') settings.configure(**settings_dict) settings._initialized = False # to load dynamic read settings.setup() assert settings.SIMPLE_STRING == 'simple' settings._dynamic_reader.set('SIMPLE_STRING', value) assert settings.SIMPLE_STRING == value
def test_should_update_settings_in_dynamic_storage_only_if_match_pattern( self, settings_dict): settings = LazySettings('tests.samples.dynamic') settings_dict['SIMPLE_SETTINGS']['DYNAMIC_SETTINGS'][ 'pattern'] = 'SIMPLE_*' settings.configure(**settings_dict) settings.setup() settings._dynamic_reader._set('ANOTHER_STRING', 'another') settings.configure(ANOTHER_STRING='dynamic') assert settings.ANOTHER_STRING == 'dynamic' assert settings._dynamic_reader._get('ANOTHER_STRING') == 'another'
def test_should_use_redis_reader_with_simple_settings(self, redis): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={'DYNAMIC_SETTINGS': {'backend': 'redis'}} ) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' redis.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert self._get_value_from_redis(redis, 'SIMPLE_STRING') == 'foo'
def test_should_use_consul_reader_with_simple_settings(self, consul): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={'DYNAMIC_SETTINGS': {'backend': 'consul'}} ) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' consul.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert consul.get('SIMPLE_STRING') == 'foo'
def test_should_use_consul_reader_with_simple_settings(self, consul): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={'DYNAMIC_SETTINGS': { 'backend': 'consul' }}) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' consul.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert consul.get('SIMPLE_STRING') == 'foo'
def test_should_update_settings_in_dynamic_storage_only_if_match_pattern( self, settings_dict ): settings = LazySettings('tests.samples.dynamic') settings_dict[ 'SIMPLE_SETTINGS' ]['DYNAMIC_SETTINGS']['pattern'] = 'SIMPLE_*' settings.configure(**settings_dict) settings._initialized = False # to load dynamic read settings.setup() settings._dynamic_reader._set('ANOTHER_STRING', 'another') settings.configure(ANOTHER_STRING='dynamic') assert settings.ANOTHER_STRING == 'dynamic' assert settings._dynamic_reader._get('ANOTHER_STRING') == 'another'
def test_should_use_dynamic_setting_only_for_setting_than_match_pattern( self, settings_dict): settings = LazySettings('tests.samples.dynamic') settings_dict['SIMPLE_SETTINGS']['DYNAMIC_SETTINGS'][ 'pattern'] = 'SIMPLE_*' settings.configure(**settings_dict) settings._initialized = False # to load dynamic read settings.setup() assert settings.ANOTHER_STRING == 'another' settings._dynamic_reader.set('ANOTHER_STRING', 'dynamic') assert settings.ANOTHER_STRING == 'another' assert settings.SIMPLE_STRING == 'simple' settings._dynamic_reader.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic'
def test_should_use_database_reader_with_simple_settings( self, database, sqlite_db ): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={'DYNAMIC_SETTINGS': { 'backend': 'database', 'sqlalchemy.url': sqlite_db }} ) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' database.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert database.get('SIMPLE_STRING') == 'foo'
def test_should_use_dynamic_setting_only_for_setting_than_match_pattern( self, settings_dict ): settings = LazySettings('tests.samples.dynamic') settings_dict[ 'SIMPLE_SETTINGS' ]['DYNAMIC_SETTINGS']['pattern'] = 'SIMPLE_*' settings.configure(**settings_dict) settings._initialized = False # to load dynamic read settings.setup() assert settings.ANOTHER_STRING == 'another' settings._dynamic_reader.set('ANOTHER_STRING', 'dynamic') assert settings.ANOTHER_STRING == 'another' assert settings.SIMPLE_STRING == 'simple' settings._dynamic_reader.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic'
def test_should_use_database_reader_with_simple_settings( self, database, sqlite_db): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={ 'DYNAMIC_SETTINGS': { 'backend': 'database', 'sqlalchemy.url': sqlite_db } }) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' database.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert database.get('SIMPLE_STRING') == 'foo'
def test_should_use_memcached_reader_with_simple_settings( self, memcached, dynamic_settings ): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={'DYNAMIC_SETTINGS': dynamic_settings} ) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' memcached.set('SIMPLE_STRING', 'dynamic', noreply=False) assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert self._get_value_from_memcached( memcached, 'SIMPLE_STRING' ) == 'foo'