Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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))
Exemplo n.º 4
0
 def test_dict_element_missing(self):
     environ['KEY_STRING'] = 'string'
     with self.assertRaises(ConfigValueError):
         self.config.declare(
             'key',
             {
                 'string': parse_str(),
                 'int': parse_int(),
             },
         )
Exemplo n.º 5
0
    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))
Exemplo n.º 6
0
    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))
Exemplo n.º 7
0
    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')
Exemplo n.º 8
0
 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(),
                     },
                 }
             },
         )
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
 def test_string_return_default_when_is_falsy(self):
     self.config.declare('key', parse_str(''))
     result = self.config.get('key')
     self.assertEqual('', result)
Exemplo n.º 12
0
 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')
Exemplo n.º 13
0
 def test_do_not_raise_when_declaring_a_dict_in_another_environment(self):
     self.config.declare('optional', {'value': parse_str()}, ('default', ),
                         'other')
Exemplo n.º 14
0
 def test_do_not_raise_when_declaring_a_variable_in_another_environment(
         self):
     self.config.declare('optional', parse_str(), ('default', ), 'other')
Exemplo n.º 15
0
 def test_string_return_default(self):
     self.config.declare('key', parse_str('default'))
     result = self.config.get('key')
     self.assertEqual('default', result)
Exemplo n.º 16
0
 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')
Exemplo n.º 17
0
 def test_dict_variable_missing(self):
     with self.assertRaises(ConfigValueError):
         self.config.declare('key', {'one': parse_str()})
Exemplo n.º 18
0
 def test_string_variable_missing(self):
     with self.assertRaises(ConfigValueError):
         self.config.declare('key', parse_str())
Exemplo n.º 19
0
 def test_string(self):
     environ['KEY'] = 'some_value'
     self.config.declare('key', parse_str())
     result = self.config.get('key')
     self.assertEqual(result, 'some_value')