|
6 | 6 | from django.core.urlresolvers import reverse
|
7 | 7 | from django.test import TestCase
|
8 | 8 | from django.test.client import RequestFactory
|
| 9 | +import reversion |
9 | 10 |
|
10 | 11 | from mediathread.factories import MediathreadTestMixin, UserFactory, \
|
11 | 12 | AssetFactory, SherdNoteFactory, ProjectFactory, AssignmentItemFactory, \
|
12 | 13 | ProjectNoteFactory
|
13 | 14 | from mediathread.projects.models import Project, \
|
14 |
| - RESPONSE_VIEW_POLICY, RESPONSE_VIEW_NEVER, RESPONSE_VIEW_SUBMITTED |
| 15 | + RESPONSE_VIEW_POLICY, RESPONSE_VIEW_NEVER, RESPONSE_VIEW_SUBMITTED, \ |
| 16 | + PUBLISH_WHOLE_WORLD |
15 | 17 | from mediathread.projects.views import SelectionAssignmentView, ProjectItemView
|
16 |
| -import reversion |
17 | 18 |
|
18 | 19 |
|
19 | 20 | class ProjectViewTest(MediathreadTestMixin, TestCase):
|
@@ -339,6 +340,48 @@ def test_project_revisions(self):
|
339 | 340 | the_json = loads(response.content)
|
340 | 341 | self.assertEquals(len(the_json['revisions']), 1)
|
341 | 342 |
|
| 343 | + def test_project_view_readonly(self): |
| 344 | + version = self.project_private.versions().next() |
| 345 | + url = reverse('project-view-readonly', |
| 346 | + kwargs={'project_id': self.project_private.id, |
| 347 | + 'version_number': version.revision_id}) |
| 348 | + |
| 349 | + # anonymous |
| 350 | + response = self.client.get(url, {}) |
| 351 | + self.assertEquals(response.status_code, 403) |
| 352 | + |
| 353 | + # forbidden |
| 354 | + self.client.login(username=self.student_two.username, password='test') |
| 355 | + response = self.client.get(url, {}) |
| 356 | + self.assertEquals(response.status_code, 403) |
| 357 | + |
| 358 | + # owner |
| 359 | + self.client.login(username=self.student_one.username, password='test') |
| 360 | + response = self.client.get(url, {}) |
| 361 | + self.assertEquals(response.status_code, 200) |
| 362 | + |
| 363 | + # ajax |
| 364 | + response = self.client.get(url, {}, |
| 365 | + HTTP_X_REQUESTED_WITH='XmlHttpRequest') |
| 366 | + self.assertEquals(response.status_code, 200) |
| 367 | + |
| 368 | + def test_project_public_view(self): |
| 369 | + url = self.project_private.get_collaboration().get_absolute_url() |
| 370 | + |
| 371 | + # still private |
| 372 | + response = self.client.get(url, {}) |
| 373 | + self.assertEquals(response.status_code, 403) |
| 374 | + |
| 375 | + # reset to public |
| 376 | + self.project_private.create_or_update_collaboration( |
| 377 | + PUBLISH_WHOLE_WORLD[0]) |
| 378 | + self.project_private.date_submitted = datetime.now() |
| 379 | + self.project_private.save() |
| 380 | + |
| 381 | + url = self.project_private.public_url() |
| 382 | + response = self.client.get(url, {}) |
| 383 | + self.assertEquals(response.status_code, 200) |
| 384 | + |
342 | 385 | def test_project_workspace_errors(self):
|
343 | 386 | project_id = self.project_private.id
|
344 | 387 | url = reverse('project-workspace', args=[project_id])
|
|
0 commit comments