switch to using get() rather than get_or_create(). Also add a test case with a different casing on the courseId
This commit is contained in:
@@ -1297,8 +1297,19 @@ class ContentStoreTest(ModuleStoreTestCase):
|
||||
def test_forum_unseeding(self):
|
||||
"""Test new course creation and verify forum seeding """
|
||||
test_course_data = self.assert_created_course(number_suffix=uuid4().hex)
|
||||
unseed_permissions_roles(self._get_course_id(test_course_data))
|
||||
self.assertFalse(are_permissions_roles_seeded(self._get_course_id(test_course_data)))
|
||||
course_id = self._get_course_id(test_course_data)
|
||||
unseed_permissions_roles(course_id)
|
||||
self.assertFalse(are_permissions_roles_seeded(course_id))
|
||||
|
||||
def test_forum_unseeding_with_different_casing(self):
|
||||
"""Test new course creation and verify forum seeding """
|
||||
test_course_data = self.assert_created_course(number_suffix=uuid4().hex)
|
||||
# make sure we don't delete a forum permissions set with different casing
|
||||
# than the passed in course_id. This is because Mongo and MySQL are using different collations
|
||||
course_id = self._get_course_id(test_course_data)
|
||||
unseed_permissions_roles(course_id.upper())
|
||||
# permissions should still be there!
|
||||
self.assertTrue(are_permissions_roles_seeded(course_id))
|
||||
|
||||
def _get_course_id(self, test_course_data):
|
||||
"""Returns the course ID (org/number/run)."""
|
||||
|
||||
@@ -36,28 +36,40 @@ def unseed_permissions_roles(course_id):
|
||||
"""
|
||||
A utility method to clean up all forum related permissions and roles
|
||||
"""
|
||||
administrator_role = Role.objects.get_or_create(name="Administrator", course_id=course_id)[0]
|
||||
moderator_role = Role.objects.get_or_create(name="Moderator", course_id=course_id)[0]
|
||||
community_ta_role = Role.objects.get_or_create(name="Community TA", course_id=course_id)[0]
|
||||
student_role = Role.objects.get_or_create(name="Student", course_id=course_id)[0]
|
||||
try:
|
||||
administrator_role = Role.objects.get(name="Administrator", course_id=course_id)
|
||||
if administrator_role.course_id == course_id:
|
||||
administrator_role.delete()
|
||||
except Role.DoesNotExist:
|
||||
pass
|
||||
|
||||
# safety switches in case the casing does not match
|
||||
try:
|
||||
moderator_role = Role.objects.get(name="Moderator", course_id=course_id)
|
||||
if moderator_role.course_id == course_id:
|
||||
moderator_role.delete()
|
||||
except Role.DoesNotExist:
|
||||
pass
|
||||
|
||||
if administrator_role.course_id == course_id:
|
||||
administrator_role.delete()
|
||||
try:
|
||||
community_ta_role = Role.objects.get(name="Community TA", course_id=course_id)
|
||||
if community_ta_role.course_id == course_id:
|
||||
community_ta_role.delete()
|
||||
except Role.DoesNotExist:
|
||||
pass
|
||||
|
||||
if moderator_role.course_id == course_id:
|
||||
moderator_role.delete()
|
||||
|
||||
if community_ta_role.course_id == course_id:
|
||||
community_ta_role.delete()
|
||||
|
||||
if student_role.course_id == course_id:
|
||||
student_role.delete()
|
||||
try:
|
||||
student_role = Role.objects.get(name="Student", course_id=course_id)
|
||||
if student_role.course_id == course_id:
|
||||
student_role.delete()
|
||||
except Role.DoesNotExist:
|
||||
pass
|
||||
|
||||
|
||||
def are_permissions_roles_seeded(course_id):
|
||||
|
||||
"""
|
||||
Returns whether the forums permissions for a course have been provisioned in
|
||||
the database
|
||||
"""
|
||||
try:
|
||||
administrator_role = Role.objects.get(name="Administrator", course_id=course_id)
|
||||
moderator_role = Role.objects.get(name="Moderator", course_id=course_id)
|
||||
|
||||
Reference in New Issue
Block a user