def test_multiple_values(self): self.config.declare('err_key_1', parse_str()) self.config.declare('err_key_2', parse_str()) with self.assertRaises(AggregateConfigError) as context: self.config.get('err_key_1') self.assertEqual(len(context.exception.exceptions), 3)
def test_nested_dict_values(self): self.config.declare( 'err_key_1', { 'value1': parse_str(), 'dict2': { 'key3': parse_str(), 'dict3': { 'key4': parse_str() } } }) with self.assertRaises(AggregateConfigError) as context: self.config.get('err_key_1') self.assertEqual(len(context.exception.exceptions), 3)
def test_string_validator_fails(self): environ['KEY'] = 'some_value' with self.assertRaises(ConfigParseError): def validator(input): self.assertEqual('some_value', input) raise RuntimeError('some message') self.config.declare('key', parse_str(validator=validator))
def test_dict_element_missing(self): environ['KEY_STRING'] = 'string' with self.assertRaises(ConfigValueError): self.config.declare( 'key', { 'string': parse_str(), 'int': parse_int(), }, )
def test_validate_str(self): environ['KEY'] = 'someinvalidemail' def email_validator(value): result = email(value) if isinstance(result, ValidationFailure): raise ValueError( '"{}" is not a valid email address'.format(value)) with self.assertRaises(ConfigParseError): self.config.declare('key', parse_str(validator=email_validator))
def test_report_message_for_missing_environment_variables(self): environ['INT_VALUE'] = 'some int value' environ['UNDECLARED'] = 'some value' environ['ERR_KEY_1_VALUE1'] = 'some int value' self.config.declare('err_key_1', parse_int()) self.config.declare( 'err_key_1', { 'value1': parse_int(), 'dict2': { 'key3': parse_str(), 'dict3': { 'key4': parse_str() } } }) self.config.declare('int_value', parse_int()) with self.assertRaises(AggregateConfigError) as context: self.config.get('undeclared') self.assertMatchSnapshot(str(context.exception))
def test_reload(self): environ['KEY'] = 'original value' self.config.declare('key', parse_str()) value1 = self.config.get('key') self.assertEqual(value1, 'original value') environ['KEY'] = 'new value' value2 = self.config.get('key') self.assertEqual(value2, 'original value') self.config.reload() value3 = self.config.get('key') self.assertEqual(value3, 'new value')
def test_recursive_dict_nested_element_missing(self): environ['KEY_STRING'] = 'string' with self.assertRaises(ConfigValueError): self.config.declare( 'key', { 'string': parse_str(), 'dict2': { 'dict3': { 'float': parse_float(), }, } }, )
def test_recursive_dict(self): environ['KEY_STRING'] = 'string' environ['KEY_DICT2_INT'] = '1' environ['KEY_DICT2_DICT3_FLOAT'] = '1.4' environ['KEY_STRING_LIST'] = 'one,two' environ['KEY_FLOAT_LIST'] = '1.4, 3.89' environ['KEY_INT_LIST'] = '1,2,3' self.config.declare( 'key', { 'string': parse_str(), 'dict2': { 'int': parse_int(), 'dict3': { 'float': parse_float(), }, }, 'string_list': parse_str_list(), 'int_list': parse_int_list(), 'float_list': parse_float_list() }, ) result = self.config.get('key') self.assertDictEqual( { 'string': 'string', 'dict2': { 'int': 1, 'dict3': { 'float': 1.4, }, }, 'string_list': ['one', 'two'], 'int_list': [1, 2, 3], 'float_list': [1.4, 3.89] }, result)
def test_dict(self): environ['KEY_STRING'] = 'string' environ['KEY_INT'] = '1' environ['KEY_FLOAT'] = '1.4' environ['KEY_BOOL'] = 'false' environ['KEY_STRING_LIST'] = 'one,two' environ['KEY_FLOAT_LIST'] = '1.4, 3.89' environ['KEY_INT_LIST'] = '1,2,3' environ['KEY_BOOL_LIST'] = '1,FALSE,no' self.config.declare( 'key', { 'string': parse_str(), 'int': parse_int(), 'float': parse_float(), 'bool': parse_bool(), 'string_list': parse_str_list(), 'int_list': parse_int_list(), 'float_list': parse_float_list(), 'bool_list': parse_bool_list(), }, ) result = self.config.get('key') self.assertDictEqual( { 'string': 'string', 'int': 1, 'float': 1.4, 'bool': False, 'string_list': ['one', 'two'], 'int_list': [1, 2, 3], 'float_list': [1.4, 3.89], 'bool_list': [True, False, False], }, result)
def test_string_return_default_when_is_falsy(self): self.config.declare('key', parse_str('')) result = self.config.get('key') self.assertEqual('', result)
def test_raise_declare_error_when_getting_a_dict_from_another_environment( self): self.config.declare('optional', {'value': parse_str()}, ('default', ), 'other') with self.assertRaises(ConfigNotInCurrentTagError): self.config.get('optional')
def test_do_not_raise_when_declaring_a_dict_in_another_environment(self): self.config.declare('optional', {'value': parse_str()}, ('default', ), 'other')
def test_do_not_raise_when_declaring_a_variable_in_another_environment( self): self.config.declare('optional', parse_str(), ('default', ), 'other')
def test_string_return_default(self): self.config.declare('key', parse_str('default')) result = self.config.get('key') self.assertEqual('default', result)
def test_single_dict_value(self): self.config.declare('err_key_1', {'value1': parse_str()}) with self.assertRaises(AggregateConfigError): self.config.get('err_key_1')
def test_dict_variable_missing(self): with self.assertRaises(ConfigValueError): self.config.declare('key', {'one': parse_str()})
def test_string_variable_missing(self): with self.assertRaises(ConfigValueError): self.config.declare('key', parse_str())
def test_string(self): environ['KEY'] = 'some_value' self.config.declare('key', parse_str()) result = self.config.get('key') self.assertEqual(result, 'some_value')