test_workspaces.py 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. # coding=utf-8
  2. from tracim.models.data import UserRoleInWorkspace
  3. from tracim.tests import FunctionalTest
  4. from tracim.fixtures.content import Content as ContentFixtures
  5. from tracim.fixtures.users_and_groups import Base as BaseFixture
  6. class TestWorkspaceEndpoint(FunctionalTest):
  7. fixtures = [BaseFixture, ContentFixtures]
  8. def test_api__get_workspace__ok_200__nominal_case(self):
  9. self.testapp.authorization = (
  10. 'Basic',
  11. (
  12. 'admin@admin.admin',
  13. 'admin@admin.admin'
  14. )
  15. )
  16. res = self.testapp.get('/api/v2/workspaces/1', status=200)
  17. workspace = res.json_body
  18. assert workspace['id'] == 1
  19. assert workspace['slug'] == 'w1'
  20. assert workspace['label'] == 'w1'
  21. assert workspace['description'] == 'This is a workspace'
  22. assert len(workspace['sidebar_entries']) == 7 # TODO change this
  23. sidebar_entry = workspace['sidebar_entries'][0]
  24. assert sidebar_entry['slug'] == 'dashboard'
  25. assert sidebar_entry['label'] == 'Dashboard'
  26. assert sidebar_entry['route'] == '/#/workspaces/1/dashboard' # nopep8
  27. assert sidebar_entry['hexcolor'] == "#252525"
  28. assert sidebar_entry['icon'] == ""
  29. sidebar_entry = workspace['sidebar_entries'][1]
  30. assert sidebar_entry['slug'] == 'contents/all'
  31. assert sidebar_entry['label'] == 'All Contents'
  32. assert sidebar_entry['route'] == "/#/workspaces/1/contents" # nopep8
  33. assert sidebar_entry['hexcolor'] == "#fdfdfd"
  34. assert sidebar_entry['icon'] == ""
  35. sidebar_entry = workspace['sidebar_entries'][2]
  36. assert sidebar_entry['slug'] == 'contents/pagehtml'
  37. assert sidebar_entry['label'] == 'Text Documents'
  38. assert sidebar_entry['route'] == '/#/workspaces/1/contents?type=pagehtml' # nopep8
  39. assert sidebar_entry['hexcolor'] == "#3f52e3"
  40. assert sidebar_entry['icon'] == "file-text-o"
  41. sidebar_entry = workspace['sidebar_entries'][3]
  42. assert sidebar_entry['slug'] == 'contents/pagemarkdownplus'
  43. assert sidebar_entry['label'] == 'Rich Markdown Files'
  44. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=pagemarkdownplus" # nopep8
  45. assert sidebar_entry['hexcolor'] == "#f12d2d"
  46. assert sidebar_entry['icon'] == "file-code"
  47. sidebar_entry = workspace['sidebar_entries'][4]
  48. assert sidebar_entry['slug'] == 'contents/files'
  49. assert sidebar_entry['label'] == 'Files'
  50. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=file" # nopep8
  51. assert sidebar_entry['hexcolor'] == "#FF9900"
  52. assert sidebar_entry['icon'] == "paperclip"
  53. sidebar_entry = workspace['sidebar_entries'][5]
  54. assert sidebar_entry['slug'] == 'contents/threads'
  55. assert sidebar_entry['label'] == 'Threads'
  56. assert sidebar_entry['route'] == "/#/workspaces/1/contents?type=thread" # nopep8
  57. assert sidebar_entry['hexcolor'] == "#ad4cf9"
  58. assert sidebar_entry['icon'] == "comments-o"
  59. sidebar_entry = workspace['sidebar_entries'][6]
  60. assert sidebar_entry['slug'] == 'calendar'
  61. assert sidebar_entry['label'] == 'Calendar'
  62. assert sidebar_entry['route'] == "/#/workspaces/1/calendar" # nopep8
  63. assert sidebar_entry['hexcolor'] == "#757575"
  64. assert sidebar_entry['icon'] == "calendar-alt"
  65. def test_api__get_workspace__err_403__unallowed_user(self):
  66. self.testapp.authorization = (
  67. 'Basic',
  68. (
  69. 'lawrence-not-real-email@fsf.local',
  70. 'foobarbaz'
  71. )
  72. )
  73. res = self.testapp.get('/api/v2/workspaces/1', status=403)
  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__get_workspace__err_401__unregistered_user(self):
  79. self.testapp.authorization = (
  80. 'Basic',
  81. (
  82. 'john@doe.doe',
  83. 'lapin'
  84. )
  85. )
  86. res = self.testapp.get('/api/v2/workspaces/1', status=401)
  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_workspace__err_403__workspace_does_not_exist(self):
  92. self.testapp.authorization = (
  93. 'Basic',
  94. (
  95. 'admin@admin.admin',
  96. 'admin@admin.admin'
  97. )
  98. )
  99. res = self.testapp.get('/api/v2/workspaces/5', status=403)
  100. assert isinstance(res.json, dict)
  101. assert 'code' in res.json.keys()
  102. assert 'message' in res.json.keys()
  103. assert 'details' in res.json.keys()
  104. class TestWorkspaceMembersEndpoint(FunctionalTest):
  105. fixtures = [BaseFixture, ContentFixtures]
  106. def test_api__get_workspace_members__ok_200__nominal_case(self):
  107. self.testapp.authorization = (
  108. 'Basic',
  109. (
  110. 'admin@admin.admin',
  111. 'admin@admin.admin'
  112. )
  113. )
  114. res = self.testapp.get('/api/v2/workspaces/1/members', status=200).json_body
  115. assert len(res) == 2
  116. user_role = res[0]
  117. assert user_role['slug'] == 'workspace_manager'
  118. assert user_role['user_id'] == 1
  119. assert user_role['workspace_id'] == 1
  120. assert user_role['user']['display_name'] == 'Global manager'
  121. assert user_role['user']['avatar_url'] is None # TODO
  122. def test_api__get_workspace_members__err_403__unallowed_user(self):
  123. self.testapp.authorization = (
  124. 'Basic',
  125. (
  126. 'lawrence-not-real-email@fsf.local',
  127. 'foobarbaz'
  128. )
  129. )
  130. res = self.testapp.get('/api/v2/workspaces/3/members', status=403)
  131. assert isinstance(res.json, dict)
  132. assert 'code' in res.json.keys()
  133. assert 'message' in res.json.keys()
  134. assert 'details' in res.json.keys()
  135. def test_api__get_workspace_members__err_401__unregistered_user(self):
  136. self.testapp.authorization = (
  137. 'Basic',
  138. (
  139. 'john@doe.doe',
  140. 'lapin'
  141. )
  142. )
  143. res = self.testapp.get('/api/v2/workspaces/1/members', status=401)
  144. assert isinstance(res.json, dict)
  145. assert 'code' in res.json.keys()
  146. assert 'message' in res.json.keys()
  147. assert 'details' in res.json.keys()
  148. def test_api__get_workspace_members__err_403__workspace_does_not_exist(self):
  149. self.testapp.authorization = (
  150. 'Basic',
  151. (
  152. 'admin@admin.admin',
  153. 'admin@admin.admin'
  154. )
  155. )
  156. res = self.testapp.get('/api/v2/workspaces/5/members', status=403)
  157. assert isinstance(res.json, dict)
  158. assert 'code' in res.json.keys()
  159. assert 'message' in res.json.keys()
  160. assert 'details' in res.json.keys()