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 test_should_override_setting_by_reader_value(self, settings_dict): settings = LazySettings('tests.samples.simple') settings.configure(**settings_dict) 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.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_configure_settings_with_new_values(self): settings = LazySettings('tests.samples.simple') assert settings.SIMPLE_STRING == 'simple' settings.configure(SIMPLE_STRING='simple2') assert settings.SIMPLE_STRING == 'simple2' settings.configure(NEW_VALUE='new') assert settings.NEW_VALUE == 'new'
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_configure(self): expect_module = 'tests.samples.simple' settings = LazySettings(expect_module) assert settings.SIMPLE_STRING == 'simple' settings.configure(SIMPLE_STRING='simple2') assert settings.SIMPLE_STRING == 'simple2' settings.configure(NEW_VALUE='new') assert settings.NEW_VALUE == 'new'
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_setting_by_last_reader_value( self, settings_dict, reader): settings = LazySettings('tests.samples.simple') settings.configure(**settings_dict) assert settings.SIMPLE_STRING == 'simple' settings._dynamic_reader.set('SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' del settings._dynamic_reader._dict['SIMPLE_STRING'] assert settings.SIMPLE_STRING == 'dynamic'
def test_should_use_consul_reader_with_simple_settings(self, consul): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={'DYNAMIC_SETTINGS': { 'backend': 'consul' }}) 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.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' }}) 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_redis_reader_with_prefix_with_simple_settings(self, redis): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={'DYNAMIC_SETTINGS': {'backend': 'redis', 'prefix': 'MYAPP_'}} ) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' redis.set('MYAPP_SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert self._get_value_from_redis(redis, 'MYAPP_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_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) 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_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_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 } }) 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_consul_reader_with_null_prefix_with_simple_settings( self, consul): settings = LazySettings('tests.samples.simple') settings.configure(SIMPLE_SETTINGS={ 'DYNAMIC_SETTINGS': { 'backend': 'consul', 'prefix': None } }) 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_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_prefix_with_simple_settings( self, database, sqlite_db): settings = LazySettings('tests.samples.simple') settings.configure( SIMPLE_SETTINGS={ 'DYNAMIC_SETTINGS': { 'backend': 'database', 'sqlalchemy.url': sqlite_db, 'prefix': 'MYAPP_' } }) settings._initialized = False settings.setup() assert settings.SIMPLE_STRING == 'simple' database.set('MYAPP_SIMPLE_STRING', 'dynamic') assert settings.SIMPLE_STRING == 'dynamic' settings.configure(SIMPLE_STRING='foo') assert database.get('MYAPP_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'
def test_should_override_a_setting_without_accessing_it_first(self): expect_module = 'tests.samples.simple' settings = LazySettings(expect_module) settings.configure(SIMPLE_STRING='overridden') assert settings.SIMPLE_STRING == 'overridden'