diff --git a/cms/djangoapps/contentstore/tests/test_views.py b/cms/djangoapps/contentstore/tests/test_views.py index f4f7fcd964..85f960e7d5 100644 --- a/cms/djangoapps/contentstore/tests/test_views.py +++ b/cms/djangoapps/contentstore/tests/test_views.py @@ -17,6 +17,7 @@ from django.test.client import Client, RequestFactory from django.test import TestCase from django.core.exceptions import PermissionDenied from override_settings import override_settings +from django.core.exceptions import PermissionDenied from xmodule.modulestore.django import modulestore, _MODULESTORES from xmodule.modulestore import Location @@ -28,6 +29,12 @@ from contentstore.utils import get_course_for_item from contentstore.tests.factories import UserFactory from contentstore.tests.factories import CourseFactory, ItemFactory import contentstore.views as views +from contentstore.tests.factories import CourseFactory, ItemFactory +from xmodule.modulestore import Location +from xmodule.x_module import ModuleSystem +from xmodule.error_module import ErrorModule +from contentstore.utils import get_course_for_item +from xmodule.templates import update_templates class Stub(): pass @@ -67,7 +74,6 @@ class ViewsTestCase(TestCase): def tearDown(self): _MODULESTORES = {} modulestore().collection.drop() - assert False def test_has_access(self): self.assertTrue(views.has_access(self.permit_user, self.location_2)) @@ -82,6 +88,27 @@ class ViewsTestCase(TestCase): 'full', '6.002_Spring_2012') request_2 = RequestFactory().get('foo') request.user = self.permit_user + + def test_has_access(self): + user = MagicMock(is_staff = True, is_active = True, is_authenticated = True) + m = MagicMock() + m.count.return_value = 1 + user.groups.filter.return_value = m + self.assertTrue(views.has_access(user, self.location_2)) + user.is_authenticated = False + self.assertFalse(views.has_access(user, self.location_2)) + + def test_course_index(self): + # UserFactory doesn't work? + self.user = MagicMock(is_staff = False, is_active = False) + self.user.is_authenticated.return_value = False + request = MagicMock(user = self.user) + # Redirects if request.user doesn't have access to location + self.assertIsInstance(views.course_index(request, 'edX', + 'full', '6.002_Spring_2012'), HttpResponseRedirect) + self.user_2 = MagicMock(is_staff = True, is_active = True) + self.user_2.is_authenticated.return_value = True + request_2 = MagicMock(user = self.user_2) # Doesn't work unless we figure out render_to_response ## views.course_index(request_2, 'MITx', ## '999', 'Robot_Super_Course') @@ -95,6 +122,15 @@ class ViewsTestCase(TestCase): # If location isn't for a "sequential", return Bad Request self.request_2 = RequestFactory().get('foo') self.request_2.user = self.permit_user + self.user = MagicMock(is_staff = False, is_active = False) + self.user.is_authenticated.return_value = False + self.request = MagicMock(user = self.user) + self.assertIsInstance(views.edit_subsection(self.request, self.location_2), + HttpResponseRedirect) + # If location isn't for a "sequential", return Bad Request + self.user_2 = MagicMock(is_staff = True, is_active = True) + self.user_2.is_authenticated.return_value = True + self.request_2 = MagicMock(user = self.user_2) self.assertIsInstance(views.edit_subsection(self.request_2, self.location_3), HttpResponseBadRequest) # Need render_to_response @@ -125,6 +161,26 @@ class ViewsTestCase(TestCase): ## views.assignment_type_update(self.request, 'MITx', '999', 'course', 'Robot_Super_Course') # if user has access, then should return HttpResponse self.request.user = self.permit_user + # if user doesn't have access, should redirect + self.user = MagicMock(is_staff = False, is_active = False) + self.user.is_authenticated.return_value = False + self.request = MagicMock(user = self.user) + self.assertIsInstance(views.edit_unit(self.request, self.location_2), + HttpResponseRedirect) + + def test_assignment_type_update(self): + # If user doesn't have access, should redirect + self.user = MagicMock(is_staff = False, is_active = False) + self.user.is_authenticated.return_value = False + self.request = RequestFactory().get('foo') + self.request.user = self.user + self.assertIsInstance(views.assignment_type_update(self.request, + 'MITx', '999', 'course', 'Robot_Super_Course'), + HttpResponseRedirect) + # if user has access, then should return HttpResponse + self.user_2 = MagicMock(is_staff = True, is_active = True) + self.user_2.is_authenticated.return_value = True + self.request.user = self.user_2 get_response = views.assignment_type_update(self.request,'MITx', '999', 'course', 'Robot_Super_Course') self.assertIsInstance(get_response,HttpResponse) @@ -184,6 +240,9 @@ class ViewsTestCase(TestCase): # if error in getting module, return ErrorModule self.request = RequestFactory().get('foo') self.request.user = self.no_permit_user + self.assertIsInstance(views.preview_module_system(self.request, + 'id', self.course), + ModuleSystem) self.request.session = {} self.assertIsInstance(views.load_preview_module(self.request, 'id', self.course, 'instance', 'shared'), @@ -258,7 +317,6 @@ class ViewsTestCase(TestCase): #store = views.get_modulestore(child_item.location.url()) #store.delete_item(child_item.location) self.assertEquals(modulestore().get_items(child_item.location.url()), []) - # Check delete_item on 'vertical' self.item_3 = ItemFactory.create(template = 'i4x://edx/templates/vertical/Empty') self.request_4 = RequestFactory().post(self.item_3.location.url()) diff --git a/lms/djangoapps/courseware/tests/test_module_render.py b/lms/djangoapps/courseware/tests/test_module_render.py index 3150450648..f419e6f582 100644 --- a/lms/djangoapps/courseware/tests/test_module_render.py +++ b/lms/djangoapps/courseware/tests/test_module_render.py @@ -107,8 +107,7 @@ class ModuleRenderTestCase(PageLoader): mock_user_2 = MagicMock(User) mock_user_2.is_authenticated.return_value = True - mock_module = MagicMock() - mock_module.shared_state_key = 'key' + mock_module = MagicMock(shared_state_key = 'key') mock_module.location = Location('i4x', 'edX', 'toy', 'chapter', 'Overview') mock_module.get_shared_state.return_value = '{}' mock_cache = MagicMock() @@ -197,11 +196,9 @@ class ModuleRenderTestCase(PageLoader): # keep going def test_preview_chemcalc(self): - mock_request = MagicMock() - mock_request.method = 'notGET' + mock_request = MagicMock(method = 'notGET') self.assertRaises(Http404, render.preview_chemcalc, mock_request) - mock_request_2 = MagicMock() - mock_request_2.method = 'GET' + mock_request_2 = MagicMock(method = 'GET') mock_request_2.GET.get.return_value = None self.assertEquals(render.preview_chemcalc(mock_request_2).content, json.dumps({'preview':'',