Commit 24aa0dec by Adam Palay Committed by Calen Pennington

fix OrgInstructorRole definition and add tests

parent c0f570ce
...@@ -187,6 +187,6 @@ class OrgStaffRole(OrgRole): ...@@ -187,6 +187,6 @@ class OrgStaffRole(OrgRole):
class OrgInstructorRole(OrgRole): class OrgInstructorRole(OrgRole):
"""An organization staff member""" """An organization instructor"""
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(OrgInstructorRole, self).__init__('staff', *args, **kwargs) super(OrgInstructorRole, self).__init__('instructor', *args, **kwargs)
...@@ -14,7 +14,14 @@ from student.tests.factories import RegistrationFactory # Imported to re-export ...@@ -14,7 +14,14 @@ from student.tests.factories import RegistrationFactory # Imported to re-export
from student.tests.factories import UserProfileFactory as StudentUserProfileFactory from student.tests.factories import UserProfileFactory as StudentUserProfileFactory
from courseware.models import StudentModule, XModuleUserStateSummaryField from courseware.models import StudentModule, XModuleUserStateSummaryField
from courseware.models import XModuleStudentInfoField, XModuleStudentPrefsField from courseware.models import XModuleStudentInfoField, XModuleStudentPrefsField
from courseware.roles import CourseInstructorRole, CourseStaffRole, CourseBetaTesterRole, GlobalStaff from courseware.roles import (
CourseInstructorRole,
CourseStaffRole,
CourseBetaTesterRole,
GlobalStaff,
OrgStaffRole,
OrgInstructorRole,
)
from xmodule.modulestore import Location from xmodule.modulestore import Location
...@@ -64,10 +71,38 @@ class BetaTesterFactory(UserFactory): ...@@ -64,10 +71,38 @@ class BetaTesterFactory(UserFactory):
@post_generation @post_generation
def course(self, create, extracted, **kwargs): def course(self, create, extracted, **kwargs):
if extracted is None: if extracted is None:
raise ValueError("Must specify a course location for a course staff user") raise ValueError("Must specify a course location for a beta-tester user")
CourseBetaTesterRole(extracted).add_users(self) CourseBetaTesterRole(extracted).add_users(self)
class OrgStaffFactory(UserFactory):
"""
Given a course Location, returns a User object with org-staff
permissions for `course`.
"""
last_name = "Org-Staff"
@post_generation
def course(self, create, extracted, **kwargs):
if extracted is None:
raise ValueError("Must specify a course location for an org-staff user")
OrgStaffRole(extracted).add_users(self)
class OrgInstructorFactory(UserFactory):
"""
Given a course Location, returns a User object with org-instructor
permissions for `course`.
"""
last_name = "Org-Instructor"
@post_generation
def course(self, create, extracted, **kwargs):
if extracted is None:
raise ValueError("Must specify a course location for an org-instructor user")
OrgInstructorRole(extracted).add_users(self)
class GlobalStaffFactory(UserFactory): class GlobalStaffFactory(UserFactory):
""" """
Returns a User object with global staff access Returns a User object with global staff access
...@@ -79,7 +114,6 @@ class GlobalStaffFactory(UserFactory): ...@@ -79,7 +114,6 @@ class GlobalStaffFactory(UserFactory):
GlobalStaff().add_users(self) GlobalStaff().add_users(self)
class StudentModuleFactory(DjangoModelFactory): class StudentModuleFactory(DjangoModelFactory):
FACTORY_FOR = StudentModule FACTORY_FOR = StudentModule
......
...@@ -18,7 +18,14 @@ from student.tests.factories import UserFactory, CourseEnrollmentFactory ...@@ -18,7 +18,14 @@ from student.tests.factories import UserFactory, CourseEnrollmentFactory
from courseware.tests.helpers import LoginEnrollmentTestCase, check_for_get_code from courseware.tests.helpers import LoginEnrollmentTestCase, check_for_get_code
from courseware.tests.modulestore_config import TEST_DATA_MIXED_MODULESTORE from courseware.tests.modulestore_config import TEST_DATA_MIXED_MODULESTORE
from courseware.tests.factories import BetaTesterFactory, StaffFactory, GlobalStaffFactory, InstructorFactory from courseware.tests.factories import (
BetaTesterFactory,
StaffFactory,
GlobalStaffFactory,
InstructorFactory,
OrgStaffFactory,
OrgInstructorFactory,
)
@override_settings(MODULESTORE=TEST_DATA_MIXED_MODULESTORE) @override_settings(MODULESTORE=TEST_DATA_MIXED_MODULESTORE)
...@@ -108,12 +115,18 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase): ...@@ -108,12 +115,18 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase):
self.courseware_chapter = ItemFactory.create(display_name='courseware') self.courseware_chapter = ItemFactory.create(display_name='courseware')
self.test_course = CourseFactory.create(number='666', display_name='Robot_Sub_Course') self.test_course = CourseFactory.create(number='666', display_name='Robot_Sub_Course')
self.sub_courseware_chapter = ItemFactory.create(parent_location=self.test_course.location, self.other_org_course = CourseFactory.create(org='Other_Org_Course')
display_name='courseware') self.sub_courseware_chapter = ItemFactory.create(
self.sub_overview_chapter = ItemFactory.create(parent_location=self.sub_courseware_chapter.location, parent_location=self.test_course.location, display_name='courseware'
display_name='Overview') )
self.welcome_section = ItemFactory.create(parent_location=self.overview_chapter.location, self.sub_overview_chapter = ItemFactory.create(
display_name='Welcome') parent_location=self.sub_courseware_chapter.location,
display_name='Overview'
)
self.welcome_section = ItemFactory.create(
parent_location=self.overview_chapter.location,
display_name='Welcome'
)
self.unenrolled_user = UserFactory(last_name="Unenrolled") self.unenrolled_user = UserFactory(last_name="Unenrolled")
...@@ -123,6 +136,8 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase): ...@@ -123,6 +136,8 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase):
self.staff_user = StaffFactory(course=self.course.location) self.staff_user = StaffFactory(course=self.course.location)
self.instructor_user = InstructorFactory(course=self.course.location) self.instructor_user = InstructorFactory(course=self.course.location)
self.org_staff_user = OrgStaffFactory(course=self.course.location)
self.org_instructor_user = OrgInstructorFactory(course=self.course.location)
self.global_staff_user = GlobalStaffFactory() self.global_staff_user = GlobalStaffFactory()
def test_redirection_unenrolled(self): def test_redirection_unenrolled(self):
...@@ -169,7 +184,7 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase): ...@@ -169,7 +184,7 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase):
def test_staff_course_access(self): def test_staff_course_access(self):
""" """
Verify instructor can load the instructor dashboard, the grade views, Verify staff can load the staff dashboard, the grade views,
and student profile pages for their course. and student profile pages for their course.
""" """
self.login(self.staff_user) self.login(self.staff_user)
...@@ -195,6 +210,36 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase): ...@@ -195,6 +210,36 @@ class TestViewAuth(ModuleStoreTestCase, LoginEnrollmentTestCase):
url = reverse('instructor_dashboard', kwargs={'course_id': self.test_course.id}) url = reverse('instructor_dashboard', kwargs={'course_id': self.test_course.id})
check_for_get_code(self, 404, url) check_for_get_code(self, 404, url)
def test_org_staff_access(self):
"""
Verify org staff can load the instructor dashboard, the grade views,
and student profile pages for course in their org.
"""
self.login(self.org_staff_user)
url = reverse('instructor_dashboard', kwargs={'course_id': self.course.id})
check_for_get_code(self, 200, url)
url = reverse('instructor_dashboard', kwargs={'course_id': self.test_course.id})
check_for_get_code(self, 200, url)
url = reverse('instructor_dashboard', kwargs={'course_id': self.other_org_course.id})
check_for_get_code(self, 404, url)
def test_org_instructor_access(self):
"""
Verify org instructor can load the instructor dashboard, the grade views,
and student profile pages for course in their org.
"""
self.login(self.org_instructor_user)
url = reverse('instructor_dashboard', kwargs={'course_id': self.course.id})
check_for_get_code(self, 200, url)
url = reverse('instructor_dashboard', kwargs={'course_id': self.test_course.id})
check_for_get_code(self, 200, url)
url = reverse('instructor_dashboard', kwargs={'course_id': self.other_org_course.id})
check_for_get_code(self, 404, url)
def test_global_staff_access(self): def test_global_staff_access(self):
""" """
Verify the global staff user can access any course. Verify the global staff user can access any course.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment