def test_set_default_str(self, create_mock): create_mock.return_value = 'hello' field = ChallengeField('md5', default='default', key='test') cfg = BaseConfig(BaseSchema()) field.__setdefault__(cfg) create_mock.assert_called_with('default', hashlib.md5) assert cfg._data['test'] == 'hello'
def test_to_basic(self): field = ChallengeField('md5') assert field.to_basic( MockConfig(), DigestValue(b'salt', b'digest', hashlib.md5)) == { 'salt': base64.b64encode(b'salt').decode(), 'digest': base64.b64encode(b'digest').decode(), }
def test_to_python_invalid_salt(self): field = ChallengeField('md5') with pytest.raises(ValueError): field.to_python(MockConfig(), { 'salt': '==Zaa', 'digest': base64.b64encode(b'digest').decode() })
def test_to_python_invalid_digest(self): field = ChallengeField('md5') with pytest.raises(ValueError): field.to_python(None, { 'salt': base64.b64encode(b'salt').decode(), 'digest': '==Za' })
def test_to_python_dict(self): field = ChallengeField('md5') salt = base64.b64encode(b'salt').decode() digest = base64.b64encode(b'digest').decode() val = field.to_python(MockConfig(), {'salt': salt, 'digest': digest}) assert val.salt == b'salt' assert val.digest == b'digest' assert val.algorithm is hashlib.md5
def test_validate_tuple(self): val = DigestValue(b'salt', b'digest', hashlib.md5) field = ChallengeField('md5') assert field._validate(None, val) is val
def test_validate_str(self): field = ChallengeField('md5') val = field._validate(None, b'digest') assert val.digest == hashlib.md5(val.salt + b'digest').digest()
def test_invalid_algorithm(self): with pytest.raises(TypeError): ChallengeField('asdf')
def test_valid_default(self): val = ChallengeField('md5', default=DigestValue.create('digest', hashlib.md5))
def test_to_python_none(self): field = ChallengeField('md5', key='test') assert field.to_python(None, None) is None
def test_set_default_none(self): cfg = BaseConfig(BaseSchema()) field = ChallengeField('md5', key='test') field.__setdefault__(cfg) assert cfg._data['test'] is None
def test_set_default_error(self): field = ChallengeField('md5', default=100) with pytest.raises(TypeError): field.__setdefault__({})
def test_to_basic_none(self): field = ChallengeField('md5') assert field.to_basic(MockConfig(), None) is None
def test_validate_error(self): field = ChallengeField('md5', name='asdf') with pytest.raises(TypeError): field._validate(None, 100)
def test_to_python_error(self): field = ChallengeField('md5') with pytest.raises(ValueError): field.to_python(None, 100)
def test_to_python_str(self): field = ChallengeField('md5') field._hash = MagicMock() field.to_python(None, 'message') field._hash.assert_called_with('message')
def test_to_basic_none(self): field = ChallengeField('md5') assert field.to_basic(None, None) is None
def test_validate_error(self): field = ChallengeField('md5', name='asdf') with pytest.raises(ValueError): field._validate(MockConfig(), 100)
def test_hash(self, create_mock): field = ChallengeField('md5') field._hash('message', b'salt') create_mock.assert_called_with('message', hashlib.md5, salt=b'salt')
def test_set_default_tuple(self): sdt = DigestValue.create('hello', hashlib.md5) field = ChallengeField('md5', key='test', default=sdt) cfg = BaseConfig(BaseSchema()) field.__setdefault__(cfg) assert cfg._data['test'] is sdt