test_user_api.py 2.9KB

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