test_user_api.py 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. # -*- coding: utf-8 -*-
  2. import pytest
  3. from sqlalchemy.orm.exc import NoResultFound
  4. import transaction
  5. from tracim.exceptions import UserDoesNotExist, 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(UserDoesNotExist):
  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(
  77. email='admin@tracim.tracim',
  78. display_name='Admin',
  79. is_active=True,
  80. )
  81. api = UserApi(
  82. current_user=None,
  83. session=self.session,
  84. config=self.config,
  85. )
  86. new_user = api.get_user_with_context(user)
  87. assert isinstance(new_user, UserInContext)
  88. assert new_user.user == user
  89. assert new_user.profile.name == 'nobody'
  90. assert new_user.user_id == user.user_id
  91. assert new_user.email == 'admin@tracim.tracim'
  92. assert new_user.display_name == 'Admin'
  93. assert new_user.is_active is True
  94. # TODO - G.M - 03-05-2018 - [avatar][calendar] Should test this
  95. # with true value when those param will be available.
  96. assert new_user.avatar_url is None
  97. assert new_user.calendar_url is None
  98. def test_unit__get_current_user_ok__nominal_case(self):
  99. user = User(email='admin@tracim.tracim')
  100. api = UserApi(
  101. current_user=user,
  102. session=self.session,
  103. config=self.config,
  104. )
  105. new_user = api.get_current_user()
  106. assert isinstance(new_user, User)
  107. assert user == new_user
  108. def test_unit__get_current_user__err__user_not_exist(self):
  109. api = UserApi(
  110. current_user=None,
  111. session=self.session,
  112. config=self.config,
  113. )
  114. with pytest.raises(UserDoesNotExist):
  115. api.get_current_user()
  116. def test_unit__authenticate_user___ok__nominal_case(self):
  117. api = UserApi(
  118. current_user=None,
  119. session=self.session,
  120. config=self.config,
  121. )
  122. user = api.authenticate_user('admin@admin.admin', 'admin@admin.admin')
  123. assert isinstance(user, User)
  124. assert user.email == 'admin@admin.admin'
  125. def test_unit__authenticate_user___err__wrong_password(self):
  126. api = UserApi(
  127. current_user=None,
  128. session=self.session,
  129. config=self.config,
  130. )
  131. with pytest.raises(AuthenticationFailed):
  132. api.authenticate_user('admin@admin.admin', 'wrong_password')
  133. def test_unit__authenticate_user___err__wrong_user(self):
  134. api = UserApi(
  135. current_user=None,
  136. session=self.session,
  137. config=self.config,
  138. )
  139. with pytest.raises(AuthenticationFailed):
  140. api.authenticate_user('admin@admin.admin', 'wrong_password')