test_user.py 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. # -*- coding: utf-8 -*-
  2. """
  3. Tests for /api/v2/users subpath endpoints.
  4. """
  5. from tracim.tests import FunctionalTest
  6. from tracim.fixtures.content import Content as ContentFixtures
  7. from tracim.fixtures.users_and_groups import Base as BaseFixture
  8. class TestUserWorkspaceEndpoint(FunctionalTest):
  9. # -*- coding: utf-8 -*-
  10. """
  11. Tests for /api/v2/users/{user_id}/workspaces
  12. """
  13. fixtures = [BaseFixture, ContentFixtures]
  14. def test_api__get_user_workspaces__ok_200__nominal_case(self):
  15. """
  16. Check obtain all workspaces reachables for user with user auth.
  17. """
  18. self.testapp.authorization = (
  19. 'Basic',
  20. (
  21. 'admin@admin.admin',
  22. 'admin@admin.admin'
  23. )
  24. )
  25. res = self.testapp.get('/api/v2/users/1/workspaces', status=200)
  26. res = res.json_body
  27. workspace = res[0]
  28. assert workspace['id'] == 1
  29. assert workspace['label'] == 'w1'
  30. assert len(workspace['sidebar_entries']) == 7
  31. sidebar_entry = workspace['sidebar_entries'][0]
  32. assert sidebar_entry['slug'] == 'dashboard'
  33. assert sidebar_entry['label'] == 'Dashboard'
  34. assert sidebar_entry['route'] == '/#/workspaces/1/dashboard' # nopep8
  35. assert sidebar_entry['hexcolor'] == "#252525"
  36. assert sidebar_entry['icon'] == ""
  37. sidebar_entry = workspace['sidebar_entries'][1]
  38. assert sidebar_entry['slug'] == 'contents/all'
  39. assert sidebar_entry['label'] == 'All Contents'
  40. assert sidebar_entry['route'] == "/#/workspaces/1/contents" # nopep8
  41. assert sidebar_entry['hexcolor'] == "#fdfdfd"
  42. assert sidebar_entry['icon'] == ""
  43. sidebar_entry = workspace['sidebar_entries'][2]
  44. assert sidebar_entry['slug'] == 'contents/htmlpage'
  45. assert sidebar_entry['label'] == 'Text Documents'
  46. assert sidebar_entry['route'] == '/#/workspaces/1/contents?type=htmlpage' # nopep8
  47. assert sidebar_entry['hexcolor'] == "#3f52e3"
  48. assert sidebar_entry['icon'] == "file-text-o"
  49. sidebar_entry = workspace['sidebar_entries'][3]
  50. assert sidebar_entry['slug'] == 'contents/markdownpluspage'
  51. assert sidebar_entry['label'] == 'Markdown Plus Documents'
  52. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=markdownpluspage" # nopep8
  53. assert sidebar_entry['hexcolor'] == "#f12d2d"
  54. assert sidebar_entry['icon'] == "file-code"
  55. sidebar_entry = workspace['sidebar_entries'][4]
  56. assert sidebar_entry['slug'] == 'contents/files'
  57. assert sidebar_entry['label'] == 'Files'
  58. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=file" # nopep8
  59. assert sidebar_entry['hexcolor'] == "#FF9900"
  60. assert sidebar_entry['icon'] == "paperclip"
  61. sidebar_entry = workspace['sidebar_entries'][5]
  62. assert sidebar_entry['slug'] == 'contents/threads'
  63. assert sidebar_entry['label'] == 'Threads'
  64. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=thread" # nopep8
  65. assert sidebar_entry['hexcolor'] == "#ad4cf9"
  66. assert sidebar_entry['icon'] == "comments-o"
  67. sidebar_entry = workspace['sidebar_entries'][6]
  68. assert sidebar_entry['slug'] == 'calendar'
  69. assert sidebar_entry['label'] == 'Calendar'
  70. assert sidebar_entry['route'] == "/#/workspaces/1/calendar" # nopep8
  71. assert sidebar_entry['hexcolor'] == "#757575"
  72. assert sidebar_entry['icon'] == "calendar-alt"
  73. def test_api__get_user_workspaces__err_403__unallowed_user(self):
  74. """
  75. Check obtain all workspaces reachables for one user
  76. with another non-admin user auth.
  77. """
  78. self.testapp.authorization = (
  79. 'Basic',
  80. (
  81. 'lawrence-not-real-email@fsf.local',
  82. 'foobarbaz'
  83. )
  84. )
  85. res = self.testapp.get('/api/v2/users/1/workspaces', status=403)
  86. assert isinstance(res.json, dict)
  87. assert 'code' in res.json.keys()
  88. assert 'message' in res.json.keys()
  89. assert 'details' in res.json.keys()
  90. def test_api__get_user_workspaces__err_401__unregistered_user(self):
  91. """
  92. Check obtain all workspaces reachables for one user
  93. without correct user auth (user unregistered).
  94. """
  95. self.testapp.authorization = (
  96. 'Basic',
  97. (
  98. 'john@doe.doe',
  99. 'lapin'
  100. )
  101. )
  102. res = self.testapp.get('/api/v2/users/1/workspaces', status=401)
  103. assert isinstance(res.json, dict)
  104. assert 'code' in res.json.keys()
  105. assert 'message' in res.json.keys()
  106. assert 'details' in res.json.keys()
  107. def test_api__get_user_workspaces__err_404__user_does_not_exist(self):
  108. """
  109. Check obtain all workspaces reachables for one user who does
  110. not exist
  111. with a correct user auth.
  112. """
  113. self.testapp.authorization = (
  114. 'Basic',
  115. (
  116. 'admin@admin.admin',
  117. 'admin@admin.admin'
  118. )
  119. )
  120. res = self.testapp.get('/api/v2/users/5/workspaces', status=404)
  121. assert isinstance(res.json, dict)
  122. assert 'code' in res.json.keys()
  123. assert 'message' in res.json.keys()
  124. assert 'details' in res.json.keys()