test_session.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. class TestLoginEndpoint(FunctionalTest):
  25. def test_api__try_login_enpoint__ok_204__nominal_case(self):
  26. params = {
  27. 'email': 'admin@admin.admin',
  28. 'password': 'admin@admin.admin',
  29. }
  30. res = self.testapp.post_json(
  31. '/api/v2/sessions/login',
  32. params=params,
  33. status=204,
  34. )
  35. def test_api__try_login_enpoint__err_400__bad_password(self):
  36. params = {
  37. 'email': 'admin@admin.admin',
  38. 'password': 'bad_password',
  39. }
  40. res = self.testapp.post_json(
  41. '/api/v2/sessions/login',
  42. status=400,
  43. params=params,
  44. )
  45. def test_api__try_login_enpoint__err_400__unregistered_user(self):
  46. params = {
  47. 'email': 'unknown_user@unknown.unknown',
  48. 'password': 'bad_password',
  49. }
  50. res = self.testapp.post_json(
  51. '/api/v2/sessions/login',
  52. status=400,
  53. params=params,
  54. )
  55. def test_api__try_login_enpoint__err_400__no_json_body(self):
  56. res = self.testapp.post_json('/api/v2/sessions/login', status=400)
  57. class TestWhoamiEndpoint(FunctionalTest):
  58. def test_api__try_whoami_enpoint__ok_200__nominal_case(self):
  59. self.testapp.authorization = (
  60. 'Basic',
  61. (
  62. 'admin@admin.admin',
  63. 'admin@admin.admin'
  64. )
  65. )
  66. res = self.testapp.get('/api/v2/sessions/whoami', status=200)
  67. assert res.json_body['display_name'] == 'Global manager'
  68. assert res.json_body['email'] == 'admin@admin.admin'
  69. assert res.json_body['created']
  70. assert res.json_body['is_active']
  71. assert res.json_body['profile']
  72. assert isinstance(res.json_body['profile']['id'], int)
  73. assert res.json_body['profile']['slug'] == 'administrators'
  74. assert res.json_body['caldav_url'] is None
  75. assert res.json_body['avatar_url'] is None
  76. def test_api__try_whoami_enpoint__err_401__unauthenticated(self):
  77. self.testapp.authorization = (
  78. 'Basic',
  79. (
  80. 'john@doe.doe',
  81. 'lapin'
  82. )
  83. )
  84. res = self.testapp.get('/api/v2/sessions/whoami', status=401)