8 User = get_user_model() |
8 User = get_user_model() |
9 |
9 |
10 class WorkspaceTests(APITestCase): |
10 class WorkspaceTests(APITestCase): |
11 |
11 |
12 def setUp(self): |
12 def setUp(self): |
13 User.objects.create_superuser('blop', 'blop@blop.com', 'blop') |
13 User.objects.create_superuser("blop", "blop@blop.com", "blop") |
14 self.user = User.objects.get(username='blop') |
14 self.user = User.objects.get(username="blop") |
15 _ = self.client.login(username='blop', password='blop') |
15 _ = self.client.login(username="blop", password="blop") |
16 User.objects.create_user('blip', 'blip@blip.com', 'blip') |
16 User.objects.create_user("blip", "blip@blip.com", "blip") |
17 self.unauthorized_user = User.objects.get(username='blip') |
17 self.unauthorized_user = User.objects.get(username="blip") |
18 |
18 |
19 def test_post_workspace(self): |
19 def test_post_workspace(self): |
20 |
20 |
21 ################################################### |
21 ################################################### |
22 # POSTing test Workspace |
22 # POSTing test Workspace |
23 ################################################### |
23 ################################################### |
24 |
24 |
25 post_url = reverse('workspace_list') |
25 post_url = reverse("workspace_list") |
26 test_title = 'bleh_title' |
26 test_title = "bleh_title" |
27 data = {'title': test_title} |
27 data = {"title": test_title} |
28 post_response = self.client.post(post_url, data, format='json') |
28 post_response = self.client.post(post_url, data, format="json") |
29 post_response_dict = json.loads(post_response.content) |
29 post_response_dict = json.loads(post_response.content.decode()) |
30 self.assertEqual(post_response.status_code, status.HTTP_201_CREATED) |
30 self.assertEqual(post_response.status_code, status.HTTP_201_CREATED) |
31 |
31 |
32 # Checking data |
32 # Checking data |
33 # in the response |
33 # in the response |
34 self.assertEqual(post_response_dict.get('workspace_created_by'), self.user.username) |
34 self.assertEqual(post_response_dict.get("workspace_created_by"), self.user.username) |
35 self.assertEqual(post_response_dict.get('title'), test_title) |
35 self.assertEqual(post_response_dict.get("title"), test_title) |
36 # in the database |
36 # in the database |
37 created_workspace_guid = post_response_dict.get('workspace_guid') |
37 created_workspace_guid = post_response_dict.get("workspace_guid") |
38 created_workspace = Workspace.objects.get(workspace_guid=created_workspace_guid) |
38 created_workspace = Workspace.objects.get(workspace_guid=created_workspace_guid) |
39 self.assertEqual(created_workspace.creator.username, self.user.username) |
39 self.assertEqual(created_workspace.creator.username, self.user.username) |
40 self.assertEqual(created_workspace.title, test_title) |
40 self.assertEqual(created_workspace.title, test_title) |
41 |
41 |
42 # Checking permission |
42 # Checking permission |
43 self.assertTrue(self.user.has_perm('view_workspace', created_workspace)) |
43 self.assertTrue(self.user.has_perm("view_workspace", created_workspace)) |
44 |
44 |
45 ################################################### |
45 ################################################### |
46 # try POSTing with unauthorized user |
46 # try POSTing with unauthorized user |
47 ################################################### |
47 ################################################### |
48 |
48 |
49 _ = self.client.login(username='blip', password='blip') |
49 _ = self.client.login(username="blip", password="blip") |
50 post_url = reverse('workspace_list') |
50 post_url = reverse("workspace_list") |
51 data = {'title': 'wont_work'} |
51 data = {"title": "wont_work"} |
52 post_response = self.client.post(post_url, data, format='json') |
52 post_response = self.client.post(post_url, data, format="json") |
53 self.assertEqual(post_response.status_code, status.HTTP_403_FORBIDDEN) |
53 self.assertEqual(post_response.status_code, status.HTTP_403_FORBIDDEN) |
54 |
54 |
55 |
55 |
56 def test_get_workspace_list(self): |
56 def test_get_workspace_list(self): |
57 |
57 |
58 ################################################### |
58 ################################################### |
59 # POSTing new Workspaces |
59 # POSTing new Workspaces |
60 ################################################### |
60 ################################################### |
61 |
61 |
62 post_url = reverse('workspace_list') |
62 post_url = reverse("workspace_list") |
63 first_test_title = 'bleh_title_2' |
63 first_test_title = "bleh_title_2" |
64 second_test_title = 'bleh_title_3' |
64 second_test_title = "bleh_title_3" |
65 first_data = {'title': first_test_title} |
65 first_data = {"title": first_test_title} |
66 second_data = {'title': second_test_title} |
66 second_data = {"title": second_test_title} |
67 self.client.post(post_url, first_data, format='json') |
67 self.client.post(post_url, first_data, format="json") |
68 self.client.post(post_url, second_data, format='json') |
68 self.client.post(post_url, second_data, format="json") |
69 |
69 |
70 ################################################### |
70 ################################################### |
71 # GETting Workspaces |
71 # GETting Workspaces |
72 ################################################### |
72 ################################################### |
73 |
73 |
74 get_url = post_url |
74 get_url = post_url |
75 get_response = self.client.get(get_url, format=json) |
75 get_response = self.client.get(get_url, format=json) |
76 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
76 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
77 |
77 |
78 # Check data |
78 # Check data |
79 get_response_content = json.loads(get_response.content) # Should be a list |
79 get_response_content = json.loads(get_response.content.decode()) # Should be a list |
80 self.assertTrue(isinstance(get_response_content, list)) |
80 self.assertTrue(isinstance(get_response_content, list)) |
81 self.assertEqual(len(get_response_content), 2) |
81 self.assertEqual(len(get_response_content), 2) |
82 |
82 |
83 def test_get_workspace(self): |
83 def test_get_workspace(self): |
84 |
84 |
85 ################################################### |
85 ################################################### |
86 # POSTing test Workspace |
86 # POSTing test Workspace |
87 ################################################### |
87 ################################################### |
88 |
88 |
89 workspace_post_url = reverse('workspace_list') |
89 workspace_post_url = reverse("workspace_list") |
90 test_title = 'bleh_title' |
90 test_title = "bleh_title" |
91 data = {'title': test_title} |
91 data = {"title": test_title} |
92 post_response = self.client.post(workspace_post_url, data, format='json') |
92 post_response = self.client.post(workspace_post_url, data, format="json") |
93 post_response_dict = json.loads(post_response.content) |
93 post_response_dict = json.loads(post_response.content.decode()) |
94 test_workspace_guid = post_response_dict.get('workspace_guid') |
94 test_workspace_guid = post_response_dict.get("workspace_guid") |
95 |
95 |
96 ################################################### |
96 ################################################### |
97 # POSTing new Renkans into test Workspace |
97 # POSTing new Renkans into test Workspace |
98 ################################################### |
98 ################################################### |
99 |
99 |
100 renkan_post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': test_workspace_guid}) |
100 renkan_post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": test_workspace_guid}) |
101 first_test_title = 'bleh_title' |
101 first_test_title = "bleh_title" |
102 first_test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'}) |
102 second_test_title = "bleh_title_2" |
103 second_test_title = 'bleh_title_2' |
103 first_data = {"title": first_test_title} |
104 second_test_content = json.dumps({'title': 'bleh_title_2', 'some_random_stuff': 'such'}) |
104 second_data = {"title": second_test_title} |
105 first_data = {'title': first_test_title, 'content': first_test_content} |
105 self.client.post(renkan_post_url, first_data, format="json") |
106 second_data = {'title': second_test_title, 'content': second_test_content} |
106 self.client.post(renkan_post_url, second_data, format="json") |
107 self.client.post(renkan_post_url, first_data, format='json') |
|
108 self.client.post(renkan_post_url, second_data, format='json') |
|
109 |
107 |
110 ################################################### |
108 ################################################### |
111 # GETting test Workspace |
109 # GETting test Workspace |
112 ################################################### |
110 ################################################### |
113 |
111 |
114 get_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid}) |
112 get_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid}) |
115 get_response = self.client.get(get_url, format='json') |
113 get_response = self.client.get(get_url, format="json") |
116 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
114 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
117 |
115 |
118 # Checking GET data |
116 # Checking GET data |
119 get_response_dict = json.loads(get_response.content) |
117 get_response_dict = json.loads(get_response.content.decode()) |
120 self.assertEqual(test_workspace_guid, get_response_dict.get('workspace_guid', '')) |
118 self.assertEqual(test_workspace_guid, get_response_dict.get("workspace_guid", "")) |
121 self.assertEqual(test_title, get_response_dict.get('title', '')) |
119 self.assertEqual(test_title, get_response_dict.get("title", "")) |
122 self.assertEqual(self.user.username, get_response_dict.get('workspace_created_by', '')) |
120 self.assertEqual(self.user.username, get_response_dict.get("workspace_created_by", "")) |
123 self.assertEqual(2, get_response_dict.get('renkan_count')) |
121 self.assertEqual(2, get_response_dict.get("renkan_count")) |
124 |
122 |
125 ################################################### |
123 ################################################### |
126 # GETting wrong workspace_guid |
124 # GETting wrong workspace_guid |
127 ################################################### |
125 ################################################### |
128 |
126 |
129 get_url = reverse('workspace_detail', kwargs={'workspace_guid': 'bleh-bad-workspace-id'}) |
127 get_url = reverse("workspace_detail", kwargs={"workspace_guid": "bleh-bad-workspace-id"}) |
130 get_response = self.client.get(get_url, format='json') |
128 get_response = self.client.get(get_url, format="json") |
131 self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) |
129 self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) |
132 |
130 |
133 ################################################### |
131 ################################################### |
134 # try GETting with unauthorized user |
132 # try GETting with unauthorized user |
135 ################################################### |
133 ################################################### |
136 |
134 |
137 _ = self.client.login(username='blip', password='blip') |
135 _ = self.client.login(username="blip", password="blip") |
138 get_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid}) |
136 get_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid}) |
139 get_response = self.client.get(get_url, format='json') |
137 get_response = self.client.get(get_url, format="json") |
140 self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN) |
138 self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN) |
141 |
139 |
142 def test_update_workspace(self): |
140 def test_update_workspace(self): |
143 |
141 |
144 ################################################### |
142 ################################################### |
145 # POSTing test Workspace |
143 # POSTing test Workspace |
146 ################################################### |
144 ################################################### |
147 |
145 |
148 workspace_post_url = reverse('workspace_list') |
146 workspace_post_url = reverse("workspace_list") |
149 test_title = 'bleh_title' |
147 test_title = "bleh_title" |
150 data = {'title': test_title} |
148 data = {"title": test_title} |
151 post_response = self.client.post(workspace_post_url, data, format='json') |
149 post_response = self.client.post(workspace_post_url, data, format="json") |
152 post_response_dict = json.loads(post_response.content) |
150 post_response_dict = json.loads(post_response.content.decode()) |
153 test_workspace_guid = post_response_dict.get('workspace_guid') |
151 test_workspace_guid = post_response_dict.get("workspace_guid") |
154 |
152 |
155 ################################################### |
153 ################################################### |
156 # PUTting into test Workspace |
154 # PUTting into test Workspace |
157 ################################################### |
155 ################################################### |
158 |
156 |
159 put_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid}) |
157 put_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid}) |
160 edited_title = 'bleh_title_2' |
158 edited_title = "bleh_title_2" |
161 put_data = {'title': edited_title} |
159 put_data = {"title": edited_title} |
162 put_response = self.client.put(put_url, put_data, format='json') |
160 put_response = self.client.put(put_url, put_data, format="json") |
163 put_response_dict = json.loads(put_response.content) |
161 put_response_dict = json.loads(put_response.content.decode()) |
164 self.assertEqual(put_response.status_code, status.HTTP_200_OK) |
162 self.assertEqual(put_response.status_code, status.HTTP_200_OK) |
165 |
163 |
166 # Checking data |
164 # Checking data |
167 # in the response |
165 # in the response |
168 self.assertEqual(put_response_dict.get('workspace_created_by'), self.user.username) |
166 self.assertEqual(put_response_dict.get("workspace_created_by"), self.user.username) |
169 self.assertEqual(put_response_dict.get('title'), edited_title) |
167 self.assertEqual(put_response_dict.get("title"), edited_title) |
170 self.assertEqual(put_response_dict.get('renkan_count'), 0) |
168 self.assertEqual(put_response_dict.get("renkan_count"), 0) |
171 # in the database |
169 # in the database |
172 edited_workspace_guid = put_response_dict.get('workspace_guid') |
170 edited_workspace_guid = put_response_dict.get("workspace_guid") |
173 edited_workspace = Workspace.objects.get(workspace_guid=edited_workspace_guid) |
171 edited_workspace = Workspace.objects.get(workspace_guid=edited_workspace_guid) |
174 self.assertEqual(edited_workspace.creator.username, self.user.username) |
172 self.assertEqual(edited_workspace.creator.username, self.user.username) |
175 self.assertEqual(edited_workspace.title, edited_title) |
173 self.assertEqual(edited_workspace.title, edited_title) |
176 self.assertEqual(edited_workspace.renkan_count, 0) |
174 self.assertEqual(edited_workspace.renkan_count, 0) |
177 |
175 |
178 ################################################### |
176 ################################################### |
179 # try PUTting with unauthorized user |
177 # try PUTting with unauthorized user |
180 ################################################### |
178 ################################################### |
181 |
179 |
182 _ = self.client.login(username='blip', password='blip') |
180 _ = self.client.login(username="blip", password="blip") |
183 put_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid}) |
181 put_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid}) |
184 put_data = { |
182 put_data = { |
185 'title' : 'wont_work' |
183 "title" : "wont_work" |
186 } |
184 } |
187 put_response = self.client.put(put_url, put_data, format='json') |
185 put_response = self.client.put(put_url, put_data, format="json") |
188 self.assertEqual(put_response.status_code, status.HTTP_403_FORBIDDEN) |
186 self.assertEqual(put_response.status_code, status.HTTP_403_FORBIDDEN) |
189 |
187 |
190 def test_delete_workspace(self): |
188 def test_delete_workspace(self): |
191 |
189 |
192 ################################################### |
190 ################################################### |
193 # POSTing test Workspace |
191 # POSTing test Workspace |
194 ################################################### |
192 ################################################### |
195 |
193 |
196 workspace_post_url = reverse('workspace_list') |
194 workspace_post_url = reverse("workspace_list") |
197 test_title = 'bleh_title' |
195 test_title = "bleh_title" |
198 data = {'title': test_title} |
196 data = {"title": test_title} |
199 post_response = self.client.post(workspace_post_url, data, format='json') |
197 post_response = self.client.post(workspace_post_url, data, format="json") |
200 post_response_dict = json.loads(post_response.content) |
198 post_response_dict = json.loads(post_response.content.decode()) |
201 to_delete_workspace_guid = post_response_dict.get('workspace_guid') |
199 to_delete_workspace_guid = post_response_dict.get("workspace_guid") |
202 |
200 |
203 ################################################### |
201 ################################################### |
204 # POSTing new Renkan into test Workspace |
202 # POSTing new Renkan into test Workspace |
205 ################################################### |
203 ################################################### |
206 |
204 |
207 renkan_post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': to_delete_workspace_guid}) |
205 renkan_post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": to_delete_workspace_guid}) |
208 renkan_test_title = 'bleh_title' |
206 renkan_test_title = "bleh_title" |
209 renkan_test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'}) |
207 renkan_test_data = {"title": renkan_test_title} |
210 renkan_test_data = {'title': renkan_test_title, 'content': renkan_test_content} |
208 post_response = self.client.post(renkan_post_url, renkan_test_data, format="json") |
211 post_response = self.client.post(renkan_post_url, renkan_test_data, format='json') |
209 to_delete_renkan_guid = json.loads(post_response.content.decode()).get("renkan_guid", "") |
212 to_delete_renkan_guid = json.loads(post_response.content).get('renkan_guid', '') |
|
213 |
210 |
214 ################################################### |
211 ################################################### |
215 # Try to DELETE test Workspace (should fail, it still contains a Renkan) |
212 # Try to DELETE test Workspace (should fail, it still contains a Renkan) |
216 ################################################### |
213 ################################################### |
217 |
214 |
218 delete_url = reverse('workspace_detail', kwargs={'workspace_guid':to_delete_workspace_guid}) |
215 delete_url = reverse("workspace_detail", kwargs={"workspace_guid":to_delete_workspace_guid}) |
219 delete_response = self.client.delete(delete_url, {}, format='json') |
216 delete_response = self.client.delete(delete_url, {}, format="json") |
220 self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST) |
217 self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST) |
221 |
218 |
222 ################################################### |
219 ################################################### |
223 # DELETE posted Renkan |
220 # DELETE posted Renkan |
224 ################################################### |
221 ################################################### |
225 |
222 |
226 delete_renkan_url = reverse('renkan_detail', kwargs={'renkan_guid':to_delete_renkan_guid}) |
223 delete_renkan_url = reverse("renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid}) |
227 delete_renkan_response = self.client.delete(delete_renkan_url, format='json') |
224 delete_renkan_response = self.client.delete(delete_renkan_url, format="json") |
228 self.assertEqual(delete_renkan_response.status_code, status.HTTP_204_NO_CONTENT) |
225 self.assertEqual(delete_renkan_response.status_code, status.HTTP_204_NO_CONTENT) |
229 |
226 |
230 ################################################### |
227 ################################################### |
231 # try to DELETE with unauthorized user |
228 # try to DELETE with unauthorized user |
232 ################################################### |
229 ################################################### |
233 |
230 |
234 _ = self.client.login(username='blip', password='blip') |
231 _ = self.client.login(username="blip", password="blip") |
235 delete_url = reverse('workspace_detail', kwargs={'workspace_guid':to_delete_workspace_guid}) |
232 delete_url = reverse("workspace_detail", kwargs={"workspace_guid":to_delete_workspace_guid}) |
236 delete_response = self.client.delete(delete_url, {}, format='json') |
233 delete_response = self.client.delete(delete_url, {}, format="json") |
237 self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN) |
234 self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN) |
238 |
235 |
239 # Restoring rightful user |
236 # Restoring rightful user |
240 _ = self.client.login(username='blop', password='blop') |
237 _ = self.client.login(username="blop", password="blop") |
241 |
238 |
242 ################################################### |
239 ################################################### |
243 # DELETE test Workspace |
240 # DELETE test Workspace |
244 ################################################### |
241 ################################################### |
245 |
242 |
246 delete_url = reverse('workspace_detail', kwargs={'workspace_guid':to_delete_workspace_guid}) |
243 delete_url = reverse("workspace_detail", kwargs={"workspace_guid":to_delete_workspace_guid}) |
247 delete_response = self.client.delete(delete_url, {}, format='json') |
244 delete_response = self.client.delete(delete_url, {}, format="json") |
248 self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT) |
245 self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT) |
249 |
246 |
250 ################################################### |
247 ################################################### |
251 # Try to DELETE workspace with wrong guid |
248 # Try to DELETE workspace with wrong guid |
252 ################################################### |
249 ################################################### |
253 |
250 |
254 delete_url = reverse('workspace_detail', kwargs={'workspace_guid': 'bad-workspace-guid'}) |
251 delete_url = reverse("workspace_detail", kwargs={"workspace_guid": "bad-workspace-guid"}) |
255 delete_response = self.client.delete(delete_url, format=json) |
252 delete_response = self.client.delete(delete_url, format=json) |
256 self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND) |
253 self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND) |
257 |
254 |