test_user.py 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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['workspace_id'] == 1
  29. assert workspace['label'] == 'Business'
  30. assert workspace['slug'] == 'business'
  31. assert len(workspace['sidebar_entries']) == 7
  32. sidebar_entry = workspace['sidebar_entries'][0]
  33. assert sidebar_entry['slug'] == 'dashboard'
  34. assert sidebar_entry['label'] == 'Dashboard'
  35. assert sidebar_entry['route'] == '/#/workspaces/1/dashboard' # nopep8
  36. assert sidebar_entry['hexcolor'] == "#252525"
  37. assert sidebar_entry['fa_icon'] == "signal"
  38. sidebar_entry = workspace['sidebar_entries'][1]
  39. assert sidebar_entry['slug'] == 'contents/all'
  40. assert sidebar_entry['label'] == 'All Contents'
  41. assert sidebar_entry['route'] == "/#/workspaces/1/contents" # nopep8
  42. assert sidebar_entry['hexcolor'] == "#fdfdfd"
  43. assert sidebar_entry['fa_icon'] == "th"
  44. sidebar_entry = workspace['sidebar_entries'][2]
  45. assert sidebar_entry['slug'] == 'contents/html-documents'
  46. assert sidebar_entry['label'] == 'Text Documents'
  47. assert sidebar_entry['route'] == '/#/workspaces/1/contents?type=html-documents' # nopep8
  48. assert sidebar_entry['hexcolor'] == "#3f52e3"
  49. assert sidebar_entry['fa_icon'] == "file-text-o"
  50. sidebar_entry = workspace['sidebar_entries'][3]
  51. assert sidebar_entry['slug'] == 'contents/markdownpluspage'
  52. assert sidebar_entry['label'] == 'Markdown Plus Documents'
  53. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=markdownpluspage" # nopep8
  54. assert sidebar_entry['hexcolor'] == "#f12d2d"
  55. assert sidebar_entry['fa_icon'] == "file-code-o"
  56. sidebar_entry = workspace['sidebar_entries'][4]
  57. assert sidebar_entry['slug'] == 'contents/files'
  58. assert sidebar_entry['label'] == 'Files'
  59. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=file" # nopep8
  60. assert sidebar_entry['hexcolor'] == "#FF9900"
  61. assert sidebar_entry['fa_icon'] == "paperclip"
  62. sidebar_entry = workspace['sidebar_entries'][5]
  63. assert sidebar_entry['slug'] == 'contents/threads'
  64. assert sidebar_entry['label'] == 'Threads'
  65. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=thread" # nopep8
  66. assert sidebar_entry['hexcolor'] == "#ad4cf9"
  67. assert sidebar_entry['fa_icon'] == "comments-o"
  68. sidebar_entry = workspace['sidebar_entries'][6]
  69. assert sidebar_entry['slug'] == 'calendar'
  70. assert sidebar_entry['label'] == 'Calendar'
  71. assert sidebar_entry['route'] == "/#/workspaces/1/calendar" # nopep8
  72. assert sidebar_entry['hexcolor'] == "#757575"
  73. assert sidebar_entry['fa_icon'] == "calendar"
  74. def test_api__get_user_workspaces__err_403__unallowed_user(self):
  75. """
  76. Check obtain all workspaces reachables for one user
  77. with another non-admin user auth.
  78. """
  79. self.testapp.authorization = (
  80. 'Basic',
  81. (
  82. 'lawrence-not-real-email@fsf.local',
  83. 'foobarbaz'
  84. )
  85. )
  86. res = self.testapp.get('/api/v2/users/1/workspaces', status=403)
  87. assert isinstance(res.json, dict)
  88. assert 'code' in res.json.keys()
  89. assert 'message' in res.json.keys()
  90. assert 'details' in res.json.keys()
  91. def test_api__get_user_workspaces__err_401__unregistered_user(self):
  92. """
  93. Check obtain all workspaces reachables for one user
  94. without correct user auth (user unregistered).
  95. """
  96. self.testapp.authorization = (
  97. 'Basic',
  98. (
  99. 'john@doe.doe',
  100. 'lapin'
  101. )
  102. )
  103. res = self.testapp.get('/api/v2/users/1/workspaces', status=401)
  104. assert isinstance(res.json, dict)
  105. assert 'code' in res.json.keys()
  106. assert 'message' in res.json.keys()
  107. assert 'details' in res.json.keys()
  108. def test_api__get_user_workspaces__err_400__user_does_not_exist(self):
  109. """
  110. Check obtain all workspaces reachables for one user who does
  111. not exist
  112. with a correct user auth.
  113. """
  114. self.testapp.authorization = (
  115. 'Basic',
  116. (
  117. 'admin@admin.admin',
  118. 'admin@admin.admin'
  119. )
  120. )
  121. res = self.testapp.get('/api/v2/users/5/workspaces', status=400)
  122. assert isinstance(res.json, dict)
  123. assert 'code' in res.json.keys()
  124. assert 'message' in res.json.keys()
  125. assert 'details' in res.json.keys()