test_user_api.py 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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_correct_user_type__ok__no_context(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_correct_user_type(user, in_context=False)
  83. assert isinstance(new_user, User)
  84. assert user == new_user
  85. def test_unit__get_correct_user_type__ok__with_context(self):
  86. user = User(email='admin@tracim.tracim')
  87. api = UserApi(
  88. current_user=None,
  89. session=self.session,
  90. config=self.config,
  91. )
  92. new_user = api._get_correct_user_type(user, in_context=True)
  93. assert isinstance(new_user, UserInContext)
  94. assert user != new_user
  95. assert new_user.user == user
  96. def test_unit__get_current__ok__nominal_case(self):
  97. user = User(email='admin@tracim.tracim')
  98. api = UserApi(
  99. current_user=user,
  100. session=self.session,
  101. config=self.config,
  102. )
  103. assert api.get_current().email == 'admin@tracim.tracim'
  104. def test_unit__get_current__err__user_not_exist(self):
  105. api = UserApi(
  106. current_user=None,
  107. session=self.session,
  108. config=self.config,
  109. )
  110. with pytest.raises(UserNotExist):
  111. api.get_current()
  112. def test_unit__authenticate_user___ok__nominal_case(self):
  113. api = UserApi(
  114. current_user=None,
  115. session=self.session,
  116. config=self.config,
  117. )
  118. user = api.authenticate_user('admin@admin.admin', 'admin@admin.admin')
  119. assert isinstance(user, User)
  120. assert user.email == 'admin@admin.admin'
  121. def test_unit__authenticate_user___err__bad_password(self):
  122. api = UserApi(
  123. current_user=None,
  124. session=self.session,
  125. config=self.config,
  126. )
  127. with pytest.raises(AuthenticationFailed):
  128. api.authenticate_user('admin@admin.admin', 'bad_password')
  129. def test_unit__authenticate_user___err__bad_user(self):
  130. api = UserApi(
  131. current_user=None,
  132. session=self.session,
  133. config=self.config,
  134. )
  135. with pytest.raises(AuthenticationFailed):
  136. api.authenticate_user('unknown_user', 'bad_password')