tests.py 1.34 KB
Newer Older
Mike Chen committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
from django.contrib.auth.models import User
from django.utils import unittest
import string
import random
from .permissions import student_role, moderator_role, add_permission, has_permission
from .models import Role, Permission


class PermissionsTestCase(unittest.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.student = User.objects.create(username=self.random_str(),
                            password="123456", email="john@yahoo.com")
        self.moderator = User.objects.create(username=self.random_str(),
                            password="123456", email="staff@edx.org")
        self.moderator.is_staff = True
        self.moderator.save()

    def tearDown(self):
        self.student.delete()
        self.moderator.delete()

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

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

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