def test_redirect_uploader_get_folder(self): request = RequestFactory().post('/upload/redirect') request.user = self.student_one request.course = self.sample_course view = RedirectToUploaderView() view.request = request self.assertEquals(view.get_upload_folder(), '') self.sample_course.add_detail(UPLOAD_FOLDER_KEY, 'z') self.assertEquals(view.get_upload_folder(), 'z')
def test_redirect_uploader(self): # no collection id request = RequestFactory().post('/upload/redirect') request.user = self.student_one request.course = self.sample_course view = RedirectToUploaderView() view.request = request with self.assertRaises(Http404): view.post(request, [], **{'collection_id': 123}) secret_keys = {'http://ccnmtl.columbia.edu': 'a very good secret'} with self.settings(SERVER_ADMIN_SECRETKEYS=secret_keys): # invalid uploader url as_user = '******' % self.student_one.username exc = ExternalCollectionFactory(url='http://abc.def.ghi') with self.assertRaises(Http404): view.post(request, [], **{'collection_id': exc.id}) # successful redirect exc = ExternalCollectionFactory(url='http://ccnmtl.columbia.edu') response = view.post(request, [], **{'collection_id': exc.id}) self.assertEquals(response.status_code, 302) self.assertTrue(response.url.startswith(exc.url)) self.assertTrue('nonce' in response.url) self.assertTrue('hmac' in response.url) self.assertTrue('redirect_url' in response.url) self.assertTrue(as_user in response.url) # "as" without permissions + audio data = {'as': self.student_two.username, 'audio': 'mp4'} request = RequestFactory().post('/upload/redirect', data) request.user = self.student_one request.course = self.sample_course response = view.post(request, [], **{'collection_id': exc.id}) self.assertEquals(response.status_code, 302) self.assertTrue(as_user in response.url) self.assertTrue('audio=mp4' in response.url) # "as" with permissions data = {'as': self.student_one.username} request = RequestFactory().post('/upload/redirect', data) request.user = UserFactory(is_staff=True) request.course = self.sample_course self.add_as_faculty(request.course, request.user) response = view.post(request, [], **{'collection_id': exc.id}) self.assertEquals(response.status_code, 302) self.assertTrue(as_user in response.url)
name='course-panopto-ingest-log'), path('course/<int:course_pk>/dashboard/panopto/', CoursePanoptoSourceView.as_view(), name='course-panopto-source'), # Discussion path('discussion/', include('mediathread.discussions.urls')), # External Collections path('explore/redirect/<int:collection_id>/', RedirectToExternalCollectionView.as_view(), name='collection_redirect'), # Uploader path('upload/redirect/<int:collection_id>/', RedirectToUploaderView.as_view(), name='uploader_redirect'), path('impersonate/', include('impersonate.urls')), path('jsi18n', JavaScriptCatalog.as_view()), path( 'media/<path:path>', django.views.static.serve, { 'document_root': os.path.abspath( os.path.join(os.path.dirname(admin.__file__), 'media')), 'show_indexes': True }), # Composition Space path('project/', include('mediathread.projects.urls')),
name='course-delete-materials'), url(r'^dashboard/convert/materials/', CourseConvertMaterialsView.as_view(), name='course-convert-materials'), # Discussion url(r'^discussion/', include('mediathread.discussions.urls')), # External Collections url(r'^explore/redirect/(?P<collection_id>\d+)/$', RedirectToExternalCollectionView.as_view(), name='collection_redirect'), # Uploader url(r'^upload/redirect/(?P<collection_id>\d+)/$', RedirectToUploaderView.as_view(), name='uploader_redirect'), url(r'^impersonate/', include('impersonate.urls')), url(r'^jsi18n', django.views.i18n.javascript_catalog), url(r'^media/(?P<path>.*)$', django.views.static.serve, {'document_root': os.path.abspath( os.path.join(os.path.dirname(admin.__file__), 'media')), 'show_indexes': True}), # Composition Space url(r'^project/', include('mediathread.projects.urls')),