test_session.py 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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. def test_api__try_login_enpoint__err_500__no_inited_db(self):
  13. params = {
  14. 'email': 'admin@admin.admin',
  15. 'password': 'admin@admin.admin',
  16. }
  17. res = self.testapp.post_json(
  18. '/api/v2/sessions/login',
  19. params=params,
  20. status=500,
  21. )
  22. assert isinstance(res.json, dict)
  23. assert 'code' in res.json.keys()
  24. assert 'message' in res.json.keys()
  25. assert 'details' in res.json.keys()
  26. class TestLoginEndpoint(FunctionalTest):
  27. def test_api__try_login_enpoint__ok_200__nominal_case(self):
  28. params = {
  29. 'email': 'admin@admin.admin',
  30. 'password': 'admin@admin.admin',
  31. }
  32. res = self.testapp.post_json(
  33. '/api/v2/sessions/login',
  34. params=params,
  35. status=200,
  36. )
  37. assert res.json_body['public_name'] == 'Global manager'
  38. assert res.json_body['email'] == 'admin@admin.admin'
  39. assert res.json_body['created']
  40. assert res.json_body['is_active']
  41. assert res.json_body['profile']
  42. assert res.json_body['profile']['slug'] == 'administrators'
  43. assert res.json_body['caldav_url'] is None
  44. assert res.json_body['avatar_url'] is None
  45. def test_api__try_login_enpoint__err_400__bad_password(self):
  46. params = {
  47. 'email': 'admin@admin.admin',
  48. 'password': 'bad_password',
  49. }
  50. res = self.testapp.post_json(
  51. '/api/v2/sessions/login',
  52. status=400,
  53. params=params,
  54. )
  55. assert isinstance(res.json, dict)
  56. assert 'code' in res.json.keys()
  57. assert 'message' in res.json.keys()
  58. assert 'details' in res.json.keys()
  59. def test_api__try_login_enpoint__err_400__unregistered_user(self):
  60. params = {
  61. 'email': 'unknown_user@unknown.unknown',
  62. 'password': 'bad_password',
  63. }
  64. res = self.testapp.post_json(
  65. '/api/v2/sessions/login',
  66. status=400,
  67. params=params,
  68. )
  69. assert isinstance(res.json, dict)
  70. assert 'code' in res.json.keys()
  71. assert 'message' in res.json.keys()
  72. assert 'details' in res.json.keys()
  73. def test_api__try_login_enpoint__err_400__no_json_body(self):
  74. res = self.testapp.post_json('/api/v2/sessions/login', status=400)
  75. assert isinstance(res.json, dict)
  76. assert 'code' in res.json.keys()
  77. assert 'message' in res.json.keys()
  78. assert 'details' in res.json.keys()
  79. class TestWhoamiEndpoint(FunctionalTest):
  80. def test_api__try_whoami_enpoint__ok_200__nominal_case(self):
  81. self.testapp.authorization = (
  82. 'Basic',
  83. (
  84. 'admin@admin.admin',
  85. 'admin@admin.admin'
  86. )
  87. )
  88. res = self.testapp.get('/api/v2/sessions/whoami', status=200)
  89. assert res.json_body['public_name'] == 'Global manager'
  90. assert res.json_body['email'] == 'admin@admin.admin'
  91. assert res.json_body['created']
  92. assert res.json_body['is_active']
  93. assert res.json_body['profile']
  94. assert res.json_body['profile']['slug'] == 'administrators'
  95. assert res.json_body['caldav_url'] is None
  96. assert res.json_body['avatar_url'] is None
  97. def test_api__try_whoami_enpoint__err_401__unauthenticated(self):
  98. self.testapp.authorization = (
  99. 'Basic',
  100. (
  101. 'john@doe.doe',
  102. 'lapin'
  103. )
  104. )
  105. res = self.testapp.get('/api/v2/sessions/whoami', status=401)
  106. assert isinstance(res.json, dict)
  107. assert 'code' in res.json.keys()
  108. assert 'message' in res.json.keys()
  109. assert 'details' in res.json.keys()