From 31b09754a131e8c386bc6561e9033a646cc98d9e Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 1 Mar 2022 20:20:44 +0100 Subject: [PATCH] Tests for is_ooc lockfunc --- evennia/locks/lockfuncs.py | 18 +++++++++++------- evennia/locks/tests.py | 11 +++++++++++ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/evennia/locks/lockfuncs.py b/evennia/locks/lockfuncs.py index 5765897a24..8f2cdb70a8 100644 --- a/evennia/locks/lockfuncs.py +++ b/evennia/locks/lockfuncs.py @@ -482,15 +482,19 @@ def is_ooc(accessing_obj, accessed_obj, *args, **kwargs): only when out of character. """ obj = accessed_obj.obj if hasattr(accessed_obj, "obj") else accessed_obj - session = obj.session if hasattr(obj, "session") else obj + account = obj.account if hasattr(obj, "account") else obj + if not account: + return True try: - return not obj.get_puppet(session) + session = accessed_obj.session except AttributeError: - try: - return not obj.account.get_puppet(session) - except AttributeError: - pass - return False + session = account.sessions.get()[0] # note-this doesn't work well + # for high multisession mode. We may need + # to change to sessiondb to resolve this + try: + return not account.get_puppet(session) + except TypeError: + return not session.get_puppet() def objtag(accessing_obj, accessed_obj, *args, **kwargs): """ diff --git a/evennia/locks/tests.py b/evennia/locks/tests.py index 482012d238..ba3a509f6a 100644 --- a/evennia/locks/tests.py +++ b/evennia/locks/tests.py @@ -209,6 +209,17 @@ class TestLockfuncs(BaseEvenniaTest): self.assertEqual(False, lockfuncs.serversetting(None, None, "TESTVAL", "[1, 2, 4]")) self.assertEqual(False, lockfuncs.serversetting(None, None, "TESTVAL", "123")) + def test_is_ooc__char(self): + self.assertEqual(False, lockfuncs.is_ooc(self.char1, self.char1)) + + def test_is_ooc__session(self): + self.assertEqual(False, lockfuncs.is_ooc(self.session, self.char1)) + + def test_is_ooc__account(self): + self.assertEqual(False, lockfuncs.is_ooc(self.account, self.char1)) + self.account.unpuppet_all() + self.assertEqual(True, lockfuncs.is_ooc(self.account, self.char1)) + class TestPermissionCheck(BaseEvenniaTest): """