test_user_api.py 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. # -*- coding: utf-8 -*-
  2. import pytest
  3. from sqlalchemy.orm.exc import NoResultFound
  4. import transaction
  5. from tracim.exceptions import UserNotExist, AuthenticationFailed
  6. from tracim.lib.core.user import UserApi
  7. from tracim.models import User
  8. from tracim.models.context_models import UserInContext
  9. from tracim.tests import DefaultTest
  10. from tracim.tests import eq_
  11. class TestUserApi(DefaultTest):
  12. def test_unit__create_and_update_user__ok__nominal_case(self):
  13. api = UserApi(
  14. current_user=None,
  15. session=self.session,
  16. config=self.config,
  17. )
  18. u = api.create_user()
  19. api.update(u, 'bob', 'bob@bob', True)
  20. nu = api.get_one_by_email('bob@bob')
  21. assert nu != None
  22. eq_('bob@bob', nu.email)
  23. eq_('bob', nu.display_name)
  24. def test_unit__user_with_email_exists__ok__nominal_case(self):
  25. api = UserApi(
  26. current_user=None,
  27. session=self.session,
  28. config=self.config,
  29. )
  30. u = api.create_user()
  31. api.update(u, 'bibi', 'bibi@bibi', True)
  32. transaction.commit()
  33. eq_(True, api.user_with_email_exists('bibi@bibi'))
  34. eq_(False, api.user_with_email_exists('unknown'))
  35. def test_unit__get_one_by_email__ok__nominal_case(self):
  36. api = UserApi(
  37. current_user=None,
  38. session=self.session,
  39. config=self.config,
  40. )
  41. u = api.create_user()
  42. api.update(u, 'bibi', 'bibi@bibi', True)
  43. uid = u.user_id
  44. transaction.commit()
  45. eq_(uid, api.get_one_by_email('bibi@bibi').user_id)
  46. def test_unit__get_one_by_email__err__user_does_not_exist(self):
  47. api = UserApi(
  48. current_user=None,
  49. session=self.session,
  50. config=self.config,
  51. )
  52. with pytest.raises(NoResultFound):
  53. api.get_one_by_email('unknown')
  54. # def test_unit__get_all__ok__nominal_case(self):
  55. # # TODO - G.M - 29-03-2018 Check why this method is not enabled
  56. # api = UserApi(
  57. # current_user=None,
  58. # session=self.session,
  59. # config=self.config,
  60. # )
  61. # u1 = api.create_user(True)
  62. # u2 = api.create_user(True)
  63. # users = api.get_all()
  64. # assert 2==len(users)
  65. def test_unit__get_one__ok__nominal_case(self):
  66. api = UserApi(
  67. current_user=None,
  68. session=self.session,
  69. config=self.config,
  70. )
  71. u = api.create_user()
  72. api.update(u, 'titi', 'titi@titi', True)
  73. one = api.get_one(u.user_id)
  74. eq_(u.user_id, one.user_id)
  75. def test_unit__get_user_with_context__nominal_case(self):
  76. user = User(email='admin@tracim.tracim')
  77. api = UserApi(
  78. current_user=None,
  79. session=self.session,
  80. config=self.config,
  81. )
  82. new_user = api.get_user_with_context(user)
  83. assert isinstance(new_user, UserInContext)
  84. assert new_user.user == user
  85. def test_unit__get_current_user_ok__nominal_case(self):
  86. user = User(email='admin@tracim.tracim')
  87. api = UserApi(
  88. current_user=user,
  89. session=self.session,
  90. config=self.config,
  91. )
  92. new_user = api.get_current_user()
  93. assert isinstance(new_user, User)
  94. assert user == new_user
  95. def test_unit__get_current_user__err__user_not_exist(self):
  96. api = UserApi(
  97. current_user=None,
  98. session=self.session,
  99. config=self.config,
  100. )
  101. with pytest.raises(UserNotExist):
  102. api.get_current_user()
  103. def test_unit__authenticate_user___ok__nominal_case(self):
  104. api = UserApi(
  105. current_user=None,
  106. session=self.session,
  107. config=self.config,
  108. )
  109. user = api.authenticate_user('admin@admin.admin', 'admin@admin.admin')
  110. assert isinstance(user, User)
  111. assert user.email == 'admin@admin.admin'
  112. def test_unit__authenticate_user___err__bad_password(self):
  113. api = UserApi(
  114. current_user=None,
  115. session=self.session,
  116. config=self.config,
  117. )
  118. with pytest.raises(AuthenticationFailed):
  119. api.authenticate_user('admin@admin.admin', 'bad_password')
  120. def test_unit__authenticate_user___err__bad_user(self):
  121. api = UserApi(
  122. current_user=None,
  123. session=self.session,
  124. config=self.config,
  125. )
  126. with pytest.raises(AuthenticationFailed):
  127. api.authenticate_user('unknown_user', 'bad_password')