add couse key verification decorator in common for use in both studio and lms

PLAT-88
This commit is contained in:
zubair-arbi
2014-09-24 14:46:30 +05:00
parent c57f1c818b
commit 40f270c945
6 changed files with 71 additions and 33 deletions

View File

@@ -4,6 +4,7 @@ This test file will test registration, login, activation, and session activity t
import time
import mock
import unittest
from ddt import ddt, data, unpack
from django.test.utils import override_settings
from django.core.cache import cache
@@ -315,3 +316,30 @@ class ForumTestCase(CourseTestCase):
]
self.course.discussion_blackouts = [(t.isoformat(), t2.isoformat()) for t, t2 in times2]
self.assertFalse(self.course.forum_posts_allowed)
@ddt
class CourseKeyVerificationTestCase(CourseTestCase):
def setUp(self):
"""
Create test course.
"""
super(CourseKeyVerificationTestCase, self).setUp()
self.course = CourseFactory.create(org='edX', number='test_course_key', display_name='Test Course')
@data(('edX/test_course_key/Test_Course', 200), ('slashes:edX+test_course_key+Test_Course', 404))
@unpack
def test_course_key_decorator(self, course_key, status_code):
"""
Tests for the ensure_valid_course_key decorator.
"""
url = '/import/{course_key}'.format(course_key=course_key)
resp = self.client.get_html(url)
self.assertEqual(resp.status_code, status_code)
url = '/import_status/{course_key}/{filename}'.format(
course_key=course_key,
filename='xyz.tar.gz'
)
resp = self.client.get_html(url)
self.assertEqual(resp.status_code, status_code)

View File

@@ -34,6 +34,7 @@ from extract_tar import safetar_extractall
from student import auth
from student.roles import CourseInstructorRole, CourseStaffRole, GlobalStaff
from util.json_request import JsonResponse
from util.views import ensure_valid_course_key
from contentstore.utils import reverse_course_url, reverse_usage_url
@@ -52,6 +53,7 @@ CONTENT_RE = re.compile(r"(?P<start>\d{1,11})-(?P<stop>\d{1,11})/(?P<end>\d{1,11
@login_required
@ensure_csrf_cookie
@require_http_methods(("GET", "POST", "PUT"))
@ensure_valid_course_key
def import_handler(request, course_key_string):
"""
The restful handler for importing a course.
@@ -299,6 +301,7 @@ def _save_request_status(request, key, status):
@require_GET
@ensure_csrf_cookie
@login_required
@ensure_valid_course_key
def import_status_handler(request, course_key_string, filename=None):
"""
Returns an integer corresponding to the status of a file import. These are:
@@ -328,6 +331,7 @@ def import_status_handler(request, course_key_string, filename=None):
@ensure_csrf_cookie
@login_required
@require_http_methods(("GET",))
@ensure_valid_course_key
def export_handler(request, course_key_string):
"""
The restful handler for exporting a course.