tests.py 2 KB
Newer Older
1
import string       # pylint: disable=W0402
2 3
import random

4 5
from django.contrib.auth.models import User
from django.test import TestCase
6

7 8
from student.models import CourseEnrollment
from django_comment_client.permissions import has_permission
9
from django_comment_common.models import Role
10 11 12 13 14 15 16 17 18 19 20 21 22 23


class PermissionsTestCase(TestCase):
    def random_str(self, length=15, chars=string.ascii_uppercase + string.digits):
        return ''.join(random.choice(chars) for x in range(length))

    def setUp(self):

        self.course_id = "edX/toy/2012_Fall"

        self.moderator_role = Role.objects.get_or_create(name="Moderator", course_id=self.course_id)[0]
        self.student_role = Role.objects.get_or_create(name="Student", course_id=self.course_id)[0]

        self.student = User.objects.create(username=self.random_str(),
24
                                           password="123456", email="john@yahoo.com")
25
        self.moderator = User.objects.create(username=self.random_str(),
26
                                             password="123456", email="staff@edx.org")
27 28
        self.moderator.is_staff = True
        self.moderator.save()
29 30
        self.student_enrollment = CourseEnrollment.enroll(self.student, self.course_id)
        self.moderator_enrollment = CourseEnrollment.enroll(self.moderator, self.course_id)
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

    def tearDown(self):
        self.student_enrollment.delete()
        self.moderator_enrollment.delete()

# Do we need to have this? We shouldn't be deleting students, ever
#        self.student.delete()
#        self.moderator.delete()

    def testDefaultRoles(self):
        self.assertTrue(self.student_role in self.student.roles.all())
        self.assertTrue(self.moderator_role in self.moderator.roles.all())

    def testPermission(self):
        name = self.random_str()
        self.moderator_role.add_permission(name)
        self.assertTrue(has_permission(self.moderator, name, self.course_id))

        self.student_role.add_permission(name)
        self.assertTrue(has_permission(self.student, name, self.course_id))