test_session.py 4.4KB

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