This centralizes the logic for group membership, and means that we don't need to make queries to find out whether the legacy groups names exist.
48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
"""
|
|
Tests of courseware.roles
|
|
"""
|
|
|
|
from django.test import TestCase
|
|
|
|
from xmodule.modulestore import Location
|
|
from courseware.tests.factories import UserFactory, StaffFactory, InstructorFactory
|
|
from student.tests.factories import AnonymousUserFactory
|
|
|
|
from courseware.roles import GlobalStaff, CourseRole
|
|
|
|
|
|
class RolesTestCase(TestCase):
|
|
"""
|
|
Tests of courseware.roles
|
|
"""
|
|
|
|
def setUp(self):
|
|
self.course = Location('i4x://edX/toy/course/2012_Fall')
|
|
self.anonymous_user = AnonymousUserFactory()
|
|
self.student = UserFactory()
|
|
self.global_staff = UserFactory(is_staff=True)
|
|
self.course_staff = StaffFactory(course=self.course)
|
|
self.course_instructor = InstructorFactory(course=self.course)
|
|
|
|
def test_global_staff(self):
|
|
self.assertFalse(GlobalStaff().has_user(self.student))
|
|
self.assertFalse(GlobalStaff().has_user(self.course_staff))
|
|
self.assertFalse(GlobalStaff().has_user(self.course_instructor))
|
|
self.assertTrue(GlobalStaff().has_user(self.global_staff))
|
|
|
|
def test_group_name_case_insensitive(self):
|
|
uppercase_loc = "i4x://ORG/COURSE/course/NAME"
|
|
lowercase_loc = uppercase_loc.lower()
|
|
|
|
lowercase_group = "role_org/course/name"
|
|
uppercase_group = lowercase_group.upper()
|
|
|
|
lowercase_user = UserFactory(groups=lowercase_group)
|
|
uppercase_user = UserFactory(groups=uppercase_group)
|
|
|
|
self.assertTrue(CourseRole("role", lowercase_loc).has_user(lowercase_user))
|
|
self.assertTrue(CourseRole("role", uppercase_loc).has_user(lowercase_user))
|
|
self.assertTrue(CourseRole("role", lowercase_loc).has_user(uppercase_user))
|
|
self.assertTrue(CourseRole("role", uppercase_loc).has_user(uppercase_user))
|
|
|