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)