test_user_api.py 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # -*- coding: utf-8 -*-
  2. import pytest
  3. from sqlalchemy.orm.exc import NoResultFound
  4. import transaction
  5. from tracim.lib.core.user import UserApi
  6. from tracim.models import User
  7. from tracim.tests import DefaultTest
  8. from tracim.tests import eq_
  9. class TestUserApi(DefaultTest):
  10. def test_unit__create_minimal_user__ok__nominal_case(self):
  11. api = UserApi(
  12. current_user=None,
  13. session=self.session,
  14. config=self.config,
  15. )
  16. u = api.create_minimal_user('bob@bob')
  17. assert u.email == 'bob@bob'
  18. assert u.display_name is None
  19. def test_unit__create_minimal_user_and_update__ok__nominal_case(self):
  20. api = UserApi(
  21. current_user=None,
  22. session=self.session,
  23. config=self.config,
  24. )
  25. u = api.create_minimal_user('bob@bob')
  26. api.update(u, 'bob', 'bob@bob', 'pass', do_save=True)
  27. nu = api.get_one_by_email('bob@bob')
  28. assert nu is not None
  29. assert nu.email == 'bob@bob'
  30. assert nu.display_name == 'bob'
  31. assert nu.validate_password('pass')
  32. def test_unit__user_with_email_exists__ok__nominal_case(self):
  33. api = UserApi(
  34. current_user=None,
  35. session=self.session,
  36. config=self.config,
  37. )
  38. u = api.create_minimal_user('bibi@bibi')
  39. api.update(u, 'bibi', 'bibi@bibi', 'pass', do_save=True)
  40. transaction.commit()
  41. eq_(True, api.user_with_email_exists('bibi@bibi'))
  42. eq_(False, api.user_with_email_exists('unknown'))
  43. def test_get_one_by_email(self):
  44. api = UserApi(
  45. current_user=None,
  46. session=self.session,
  47. config=self.config,
  48. )
  49. u = api.create_minimal_user('bibi@bibi')
  50. self.session.flush()
  51. api.update(u, 'bibi', 'bibi@bibi', 'pass', do_save=True)
  52. uid = u.user_id
  53. transaction.commit()
  54. eq_(uid, api.get_one_by_email('bibi@bibi').user_id)
  55. def test_get_one_by_email_exception(self):
  56. api = UserApi(
  57. current_user=None,
  58. session=self.session,
  59. config=self.config,
  60. )
  61. with pytest.raises(NoResultFound):
  62. api.get_one_by_email('unknown')
  63. def test_get_all(self):
  64. api = UserApi(
  65. current_user=None,
  66. session=self.session,
  67. config=self.config,
  68. )
  69. u1 = api.create_minimal_user('bibi@bibi')
  70. users = api.get_all()
  71. # u1 + Admin user from BaseFixture
  72. assert 2 == len(users)
  73. def test_get_one(self):
  74. api = UserApi(
  75. current_user=None,
  76. session=self.session,
  77. config=self.config,
  78. )
  79. u = api.create_minimal_user('titi@titi')
  80. api.update(u, 'titi', 'titi@titi', 'pass', do_save=True)
  81. one = api.get_one(u.user_id)
  82. eq_(u.user_id, one.user_id)