mirror of
https://github.com/evennia/evennia.git
synced 2026-03-20 14:56:30 +01:00
63 lines
2.9 KiB
Python
63 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
This is part of Evennia's unittest framework, for testing
|
|
the stability and integrrity of the codebase during updates.
|
|
|
|
This module tests the lock functionality of Evennia.
|
|
|
|
"""
|
|
|
|
try:
|
|
# this is a special optimized Django version, only available in current Django devel
|
|
from django.utils.unittest import TestCase
|
|
except ImportError:
|
|
from django.test import TestCase
|
|
|
|
from django.conf import settings
|
|
from src.locks import lockhandler, lockfuncs
|
|
from src.utils import create
|
|
|
|
#------------------------------------------------------------
|
|
#
|
|
# Lock testing
|
|
#
|
|
#------------------------------------------------------------
|
|
|
|
class LockTest(TestCase):
|
|
"Defines the lock test base"
|
|
def setUp(self):
|
|
"sets up the testing environment"
|
|
|
|
self.obj1 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj1")
|
|
self.obj2 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj2")
|
|
|
|
class TestLockCheck(LockTest):
|
|
def testrun(self):
|
|
dbref = self.obj2.dbref
|
|
self.obj1.locks.add("owner:dbref(%s);edit:dbref(%s) or perm(Wizards);examine:perm(Builders) and id(%s);delete:perm(Wizards);get:all()" % (dbref, dbref, dbref))
|
|
self.obj2.permissions = ['Wizards']
|
|
self.assertEquals(True, self.obj1.locks.check(self.obj2, 'owner'))
|
|
self.assertEquals(True, self.obj1.locks.check(self.obj2, 'edit'))
|
|
self.assertEquals(True, self.obj1.locks.check(self.obj2, 'examine'))
|
|
self.assertEquals(True, self.obj1.locks.check(self.obj2, 'delete'))
|
|
self.assertEquals(True, self.obj1.locks.check(self.obj2, 'get'))
|
|
self.obj1.locks.add("get:false()")
|
|
self.assertEquals(False, self.obj1.locks.check(self.obj2, 'get'))
|
|
self.assertEquals(True, self.obj1.locks.check(self.obj2, 'not_exist', default=True))
|
|
class TestLockfuncs(LockTest):
|
|
def testrun(self):
|
|
self.obj2.permissions = ['Wizards']
|
|
self.assertEquals(True, lockfuncs.true(self.obj2, self.obj1))
|
|
self.assertEquals(False, lockfuncs.false(self.obj2, self.obj1))
|
|
self.assertEquals(True, lockfuncs.perm(self.obj2, self.obj1, 'Wizards'))
|
|
self.assertEquals(True, lockfuncs.perm_above(self.obj2, self.obj1, 'Builders'))
|
|
dbref = self.obj2.dbref
|
|
self.assertEquals(True, lockfuncs.dbref(self.obj2, self.obj1, '%s' % dbref))
|
|
self.obj2.db.testattr = 45
|
|
self.assertEquals(True, lockfuncs.attr(self.obj2, self.obj1, 'testattr', '45'))
|
|
self.assertEquals(False, lockfuncs.attr_gt(self.obj2, self.obj1, 'testattr', '45'))
|
|
self.assertEquals(True, lockfuncs.attr_ge(self.obj2, self.obj1, 'testattr', '45'))
|
|
self.assertEquals(False, lockfuncs.attr_lt(self.obj2, self.obj1, 'testattr', '45'))
|
|
self.assertEquals(True, lockfuncs.attr_le(self.obj2, self.obj1, 'testattr', '45'))
|
|
self.assertEquals(False, lockfuncs.attr_ne(self.obj2, self.obj1, 'testattr', '45'))
|