def test_ref_path_container_error(self): parent = Config(Schema(key='root')) child = Config(Schema(key='child'), parent=parent) child._container = MagicMock() child._container._get_item_position = MagicMock( side_effect=ValueError()) assert child._ref_path == 'root.child'
def test_load_expanduser(self, expanduser, mop): expanduser.return_value = 'path/to/blah.txt' config = Config(Schema()) config.load('~/blah.txt', format='json') expanduser.assert_called_once_with('~/blah.txt') mop.assert_called_once_with('path/to/blah.txt', 'rb')
def test_save(self, dumps, mop): dumps.return_value = b'hello' config = Config(Schema()) config.save('blah.txt', format='blah') dumps.assert_called_once_with('blah') mop.assert_called_once_with('blah.txt', 'wb') mop().write.assert_called_once_with(b'hello')
def test_load(self, loads, mop): loads.return_value = {'x': 1} config = Config(Schema()) object.__setattr__(config, 'loads', loads) assert config.load('blah.txt', format='blah') == {'x': 1} loads.assert_called_once_with(b'hello', 'blah') mop.assert_called_once_with('blah.txt', 'rb')
def test_ref_path_container(self): parent = Config(Schema(key='root')) child = Config(Schema(key='child'), parent=parent) child._container = MagicMock() child._container._get_item_position = MagicMock() child._container._get_item_position.return_value = '1' assert child._ref_path == 'root.child[1]' child._container._get_item_position.assert_called_once_with(child)
def test_loads(self, fr_get): fmt = MockFormatter() load_tree = MagicMock() fr_get.return_value = fmt config = Config(Schema()) object.__setattr__(config, 'load_tree', load_tree) config.loads('hello', format='blah') config.load_tree.assert_called_once_with({'x': 1}) fmt.loads.assert_called_once_with(config, b'hello') fr_get.assert_called_once_with('blah')
def test_set_default_str(self, create_mock): create_mock.return_value = 'hello' field = ChallengeField('md5', default='default', key='test') cfg = Config(Schema()) field.__setdefault__(cfg) create_mock.assert_called_with('default', hashlib.md5) assert cfg._data['test'] == 'hello'
def test_setdefault_env_exists(self, mock_environ_get): retval = mock_environ_get.return_value = object() cfg = Config(schema=Schema()) field = Field(env='ASDF', key='field') field.__setdefault__(cfg) assert cfg._data == {'field': retval} mock_environ_get.assert_called_once_with('ASDF')
def test_setdefault_env_exists_valid(self, mock_environ_get): env = mock_environ_get.return_value = object() retval = object() cfg = Config(schema=Schema()) field = Field(env='ASDF', key='field') field.validate = MagicMock(return_value=retval) field.__setdefault__(cfg) field.validate.assert_called_once_with(cfg, env) assert cfg._data == {'field': retval}
def test_setdefault_env_exists_invalid(self, mock_environ_get): env = mock_environ_get.return_value = object() retval = object() cfg = Config(schema=Schema()) field = Field(env='ASDF', key='field') field.validate = MagicMock(side_effect=ValueError()) field._default = retval with pytest.raises(ValidationError): field.__setdefault__(cfg) field.validate.assert_called_once_with(cfg, env)
def test_setdefault_env_exists_invalid_validationerror(self, mock_environ_get): env = mock_environ_get.return_value = object() retval = object() cfg = Config(schema=Schema()) field = Field(env='ASDF', key='field') err = ValidationError(cfg, field, ValueError('asdf')) field.validate = MagicMock(side_effect=err) field._default = retval with pytest.raises(ValidationError) as exc: field.__setdefault__(cfg) assert exc.value is err
def test_ref_path(self): parent = Config(Schema(key='root')) child = Config(Schema(key='child'), parent=parent) assert child._ref_path == 'root.child'
def test_add_field_dynamic(self): schema = Schema(dynamic=True) config = Config(schema) assert config._set_value('hello', 'world') == 'world' assert config._data['hello'] == 'world' assert isinstance(config._fields['hello'], AnyField)
def test_ref_path_no_parent(self): cfg = Config(Schema(key='child', schema=Schema(key='root'))) assert cfg._ref_path == "root.child"
def test_set_default_none(self): cfg = Config(Schema()) field = ChallengeField('md5', key='test') field.__setdefault__(cfg) assert cfg._data['test'] is None
def test_add_field_failed(self): schema = Schema() config = Config(schema) with pytest.raises(AttributeError): config._set_value('hello', 'world')
def test_get_field_base(self): schema = Schema() field = schema._fields['hello'] = Field() config = Config(schema) assert config._get_field('hello') is field
def test_set_default_tuple(self): sdt = DigestValue.create('hello', hashlib.md5) field = ChallengeField('md5', key='test', default=sdt) cfg = Config(Schema()) field.__setdefault__(cfg) assert cfg._data['test'] is sdt
def test_keyfile_parent(self): parent = Config(Schema(), key_filename='asdf.txt') child = Config(Schema(), parent) assert child._keyfile is parent._keyfile
def test_keyfile_default(self): parent = Config(Schema()) child = Config(Schema(), parent) assert child._keyfile is parent._keyfile assert child._keyfile.filename == '/path/to/cincokey'
def test_keyfile_set(self): parent = Config(Schema(), key_filename='asdf.txt') child = Config(Schema(), parent, key_filename='qwer.txt') assert child._keyfile is not parent._keyfile
def test_key_filename_set_none(self): parent = Config(Schema(), key_filename='asdf.txt') child = Config(Schema(), parent, key_filename='qwer.txt') child._key_filename = None assert child._key_filename == 'asdf.txt' assert parent._key_filename == 'asdf.txt'
def test_key_filename_none_ctor(self): cfg = Config(Schema()) assert cfg._key_filename is Config.DEFAULT_CINCOKEY_FILEPATH
def test_get_field_dynamic(self): schema = Schema() config = Config(schema) config._fields['hello'] = 'world' assert config._get_field('hello') == 'world'
def test_key_filename_ctor(self): cfg = Config(Schema(), key_filename='asdf.txt') assert cfg._key_filename == 'asdf.txt' assert cfg._Config__keyfile.filename == 'asdf.txt'