A multipurpose python flask API server and administration SPA
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.4 KiB

  1. from typing import Dict, Callable, Any
  2. import pytest
  3. from corvus import db
  4. from corvus.model import UserToken
  5. from corvus.service.transformation_service import (
  6. BaseTransformer,
  7. deserialize_model,
  8. register_transformer,
  9. serialize_model)
  10. from corvus.service.user_token_service import UserTokenTransformer
  11. def test_serialize_model():
  12. user_token = UserToken()
  13. user_token.token = 'test'
  14. result = serialize_model(user_token)
  15. assert result is not None
  16. assert result['token'] == 'test'
  17. def test_deserialize_model():
  18. user_token_json = {
  19. 'token': 'test'
  20. }
  21. result = deserialize_model(UserToken, user_token_json)
  22. assert result is not None
  23. assert result.token == 'test'
  24. def test_registering_two_transformers_of_the_same_type():
  25. class BadTransformer(BaseTransformer):
  26. type = UserToken
  27. def _serializers(self) -> Dict[str, Callable[[], Any]]:
  28. pass
  29. def _deserializers(self) -> Dict[str, Callable[[db.Model, Any], None]]:
  30. pass
  31. error = None
  32. with pytest.raises(KeyError) as e_info:
  33. error = e_info
  34. register_transformer(BadTransformer)
  35. assert error is not None
  36. error_msg = error.value.args[0]
  37. assert error_msg is not None
  38. assert UserToken.__name__ in error_msg
  39. assert UserTokenTransformer.__name__ in error_msg
  40. assert BadTransformer.__name__ in error_msg