test_workspaces.py 7.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. # TODO - G.M - 22-05-2018 - Check if this feature is needed
  66. # def test_api__get_workspace__err_403__unallowed_user(self):
  67. # self.testapp.authorization = (
  68. # 'Basic',
  69. # (
  70. # 'lawrence-not-real-email@fsf.local',
  71. # 'foobarbaz'
  72. # )
  73. # )
  74. # res = self.testapp.get('/api/v2/workspaces/1', status=403)
  75. # assert isinstance(res.json, dict)
  76. # assert 'code' in res.json.keys()
  77. # assert 'message' in res.json.keys()
  78. # assert 'details' in res.json.keys()
  79. def test_api__get_workspace__err_401__unregistered_user(self):
  80. self.testapp.authorization = (
  81. 'Basic',
  82. (
  83. 'john@doe.doe',
  84. 'lapin'
  85. )
  86. )
  87. res = self.testapp.get('/api/v2/workspaces/1', status=401)
  88. assert isinstance(res.json, dict)
  89. assert 'code' in res.json.keys()
  90. assert 'message' in res.json.keys()
  91. assert 'details' in res.json.keys()
  92. def test_api__get_workspace__err_404__workspace_does_not_exist(self):
  93. self.testapp.authorization = (
  94. 'Basic',
  95. (
  96. 'admin@admin.admin',
  97. 'admin@admin.admin'
  98. )
  99. )
  100. res = self.testapp.get('/api/v2/workspaces/5', status=404)
  101. assert isinstance(res.json, dict)
  102. assert 'code' in res.json.keys()
  103. assert 'message' in res.json.keys()
  104. assert 'details' in res.json.keys()
  105. class TestWorkspaceMembersEndpoint(FunctionalTest):
  106. fixtures = [BaseFixture, ContentFixtures]
  107. def test_api__get_workspace_members__ok_200__nominal_case(self):
  108. self.testapp.authorization = (
  109. 'Basic',
  110. (
  111. 'admin@admin.admin',
  112. 'admin@admin.admin'
  113. )
  114. )
  115. res = self.testapp.get('/api/v2/workspaces/1/members', status=200).json_body
  116. assert len(res) == 2
  117. user_role = res[0]
  118. assert user_role['slug'] == 'workspace_manager'
  119. assert user_role['user_id'] == 1
  120. assert user_role['workspace_id'] == 1
  121. assert user_role['user']['display_name'] == 'Global manager'
  122. assert user_role['user']['avatar_url'] is None # TODO
  123. # def test_api__get_workspace_members__err_400__unallowed_user(self):
  124. # self.testapp.authorization = (
  125. # 'Basic',
  126. # (
  127. # 'lawrence-not-real-email@fsf.local',
  128. # 'foobarbaz'
  129. # )
  130. # )
  131. # res = self.testapp.get('/api/v2/workspaces/3/members', status=403)
  132. # assert isinstance(res.json, dict)
  133. # assert 'code' in res.json.keys()
  134. # assert 'message' in res.json.keys()
  135. # assert 'details' in res.json.keys()
  136. def test_api__get_workspace_members__err_401__unregistered_user(self):
  137. self.testapp.authorization = (
  138. 'Basic',
  139. (
  140. 'john@doe.doe',
  141. 'lapin'
  142. )
  143. )
  144. res = self.testapp.get('/api/v2/workspaces/1/members', status=401)
  145. assert isinstance(res.json, dict)
  146. assert 'code' in res.json.keys()
  147. assert 'message' in res.json.keys()
  148. assert 'details' in res.json.keys()
  149. def test_api__get_workspace_members__err_404__workspace_does_not_exist(self):
  150. self.testapp.authorization = (
  151. 'Basic',
  152. (
  153. 'admin@admin.admin',
  154. 'admin@admin.admin'
  155. )
  156. )
  157. res = self.testapp.get('/api/v2/workspaces/5/members', status=404)
  158. assert isinstance(res.json, dict)
  159. assert 'code' in res.json.keys()
  160. assert 'message' in res.json.keys()
  161. assert 'details' in res.json.keys()