Exemple #1
0
    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')
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
         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')),
Exemple #5
0
        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')),