test_session.py 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. # coding=utf-8
  2. import pytest
  3. from sqlalchemy.exc import OperationalError
  4. from tracim.tests import FunctionalTest
  5. from tracim.tests import FunctionalTestNoDB
  6. class TestLogoutEndpoint(FunctionalTest):
  7. def test_api__access_logout_get_enpoint__ok__nominal_case(self):
  8. res = self.testapp.post_json('/api/v2/sessions/logout', status=204)
  9. def test_api__access_logout_post_enpoint__ok__nominal_case(self):
  10. res = self.testapp.get('/api/v2/sessions/logout', status=204)
  11. class TestLoginEndpointUnititedDB(FunctionalTestNoDB):
  12. @pytest.mark.xfail(raises=OperationalError,
  13. reason='Not supported yet by hapic')
  14. def test_api__try_login_enpoint__err_500__no_inited_db(self):
  15. params = {
  16. 'email': 'admin@admin.admin',
  17. 'password': 'admin@admin.admin',
  18. }
  19. res = self.testapp.post_json(
  20. '/api/v2/sessions/login',
  21. params=params,
  22. status=500,
  23. )
  24. assert isinstance(res.json, dict)
  25. assert 'code' in res.json.keys()
  26. assert 'message' in res.json.keys()
  27. assert 'details' in res.json.keys()
  28. class TestLoginEndpoint(FunctionalTest):
  29. def test_api__try_login_enpoint__ok_200__nominal_case(self):
  30. params = {
  31. 'email': 'admin@admin.admin',
  32. 'password': 'admin@admin.admin',
  33. }
  34. res = self.testapp.post_json(
  35. '/api/v2/sessions/login',
  36. params=params,
  37. status=200,
  38. )
  39. assert res.json_body['display_name'] == 'Global manager'
  40. assert res.json_body['email'] == 'admin@admin.admin'
  41. assert res.json_body['created']
  42. assert res.json_body['is_active']
  43. assert res.json_body['profile']
  44. assert isinstance(res.json_body['profile']['id'], int)
  45. assert res.json_body['profile']['slug'] == 'administrators'
  46. assert res.json_body['caldav_url'] is None
  47. assert res.json_body['avatar_url'] is None
  48. def test_api__try_login_enpoint__err_400__bad_password(self):
  49. params = {
  50. 'email': 'admin@admin.admin',
  51. 'password': 'bad_password',
  52. }
  53. res = self.testapp.post_json(
  54. '/api/v2/sessions/login',
  55. status=400,
  56. params=params,
  57. )
  58. assert isinstance(res.json, dict)
  59. assert 'code' in res.json.keys()
  60. assert 'message' in res.json.keys()
  61. assert 'details' in res.json.keys()
  62. def test_api__try_login_enpoint__err_400__unregistered_user(self):
  63. params = {
  64. 'email': 'unknown_user@unknown.unknown',
  65. 'password': 'bad_password',
  66. }
  67. res = self.testapp.post_json(
  68. '/api/v2/sessions/login',
  69. status=400,
  70. params=params,
  71. )
  72. assert isinstance(res.json, dict)
  73. assert 'code' in res.json.keys()
  74. assert 'message' in res.json.keys()
  75. assert 'details' in res.json.keys()
  76. def test_api__try_login_enpoint__err_400__no_json_body(self):
  77. res = self.testapp.post_json('/api/v2/sessions/login', status=400)
  78. assert isinstance(res.json, dict)
  79. assert 'code' in res.json.keys()
  80. assert 'message' in res.json.keys()
  81. assert 'details' in res.json.keys()
  82. class TestWhoamiEndpoint(FunctionalTest):
  83. def test_api__try_whoami_enpoint__ok_200__nominal_case(self):
  84. self.testapp.authorization = (
  85. 'Basic',
  86. (
  87. 'admin@admin.admin',
  88. 'admin@admin.admin'
  89. )
  90. )
  91. res = self.testapp.get('/api/v2/sessions/whoami', status=200)
  92. assert res.json_body['display_name'] == 'Global manager'
  93. assert res.json_body['email'] == 'admin@admin.admin'
  94. assert res.json_body['created']
  95. assert res.json_body['is_active']
  96. assert res.json_body['profile']
  97. assert isinstance(res.json_body['profile']['id'], int)
  98. assert res.json_body['profile']['slug'] == 'administrators'
  99. assert res.json_body['caldav_url'] is None
  100. assert res.json_body['avatar_url'] is None
  101. def test_api__try_whoami_enpoint__err_401__unauthenticated(self):
  102. self.testapp.authorization = (
  103. 'Basic',
  104. (
  105. 'john@doe.doe',
  106. 'lapin'
  107. )
  108. )
  109. res = self.testapp.get('/api/v2/sessions/whoami', status=401)
  110. assert isinstance(res.json, dict)
  111. assert 'code' in res.json.keys()
  112. assert 'message' in res.json.keys()
  113. assert 'details' in res.json.keys()