Further server.py unittests

This commit is contained in:
Griatch 2019-02-10 21:38:56 +01:00
parent 471bced78b
commit efb3cf3705

View file

@ -5,6 +5,7 @@ Test the main server component
from unittest import TestCase from unittest import TestCase
from mock import MagicMock, patch, DEFAULT, call from mock import MagicMock, patch, DEFAULT, call
from django.test import override_settings
from evennia.utils.test_resources import unload_module from evennia.utils.test_resources import unload_module
@ -19,6 +20,22 @@ class TestServer(TestCase):
from evennia.server import server from evennia.server import server
self.server = server self.server = server
def test__server_maintenance_reset(self):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=0,
ServerConfig=DEFAULT) as mocks:
mocks['connection'].close = MagicMock()
mocks['ServerConfig'].objects.conf = MagicMock(return_value=100)
# flush cache
self.server._server_maintenance()
mock['ServerConfig'].objects.conf.assert_called_with('runtime', default=0.0)
def test__server_maintenance_flush(self): def test__server_maintenance_flush(self):
with patch.multiple("evennia.server.server", with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT, LoopingCall=DEFAULT,
@ -126,9 +143,39 @@ class TestServer(TestCase):
evennia = self.server.Evennia(MagicMock()) evennia = self.server.Evennia(MagicMock())
self.assertEqual(evennia.start_time, 1000) self.assertEqual(evennia.start_time, 1000)
def test_update_defaults(self): @patch("evennia.objects.models.ObjectDB")
evennia = self.server.Evennia(MagicMock()) @patch("evennia.server.server.AccountDB")
evennia.update_defaults() @patch("evennia.server.server.ScriptDB")
@patch("evennia.comms.models.ChannelDB")
def test_update_defaults(self, mockchan, mockscript, mockacct, mockobj):
with patch.multiple("evennia.server.server",
ServerConfig=DEFAULT) as mocks:
mockchan.objects.filter = MagicMock()
mockscript.objects.filter = MagicMock()
mockacct.objects.filter = MagicMock()
mockobj.objects.filter = MagicMock()
# fake mismatches
settings_names = ("CMDSET_CHARACTER", "CMDSET_ACCOUNT",
"BASE_ACCOUNT_TYPECLASS", "BASE_OBJECT_TYPECLASS",
"BASE_CHARACTER_TYPECLASS", "BASE_ROOM_TYPECLASS",
"BASE_EXIT_TYPECLASS", "BASE_SCRIPT_TYPECLASS",
"BASE_CHANNEL_TYPECLASS")
fakes = {name: "Dummy.path" for name in settings_names}
def _mock_conf(key, *args):
return fakes[key]
mocks['ServerConfig'].objects.conf = _mock_conf
evennia = self.server.Evennia(MagicMock())
evennia.update_defaults()
mockchan.objects.filter.assert_called()
mockscript.objects.filter.assert_called()
mockacct.objects.filter.assert_called()
mockobj.objects.filter.assert_called()
def test_initial_setup(self): def test_initial_setup(self):
from evennia.utils.create import create_account from evennia.utils.create import create_account
@ -142,3 +189,49 @@ class TestServer(TestCase):
mocks['AccountDB'].objects.get = MagicMock(return_value=acct) mocks['AccountDB'].objects.get = MagicMock(return_value=acct)
evennia = self.server.Evennia(MagicMock()) evennia = self.server.Evennia(MagicMock())
evennia.run_initial_setup() evennia.run_initial_setup()
def test_initial_setup_retry(self):
from evennia.utils.create import create_account
acct = create_account("TestSuperuser", "test@test.com", "testpassword",
is_superuser=True)
with patch.multiple("evennia.server.initial_setup",
ServerConfig=DEFAULT,
reset_server=DEFAULT,
AccountDB=DEFAULT) as mocks:
mocks['AccountDB'].objects.get = MagicMock(return_value=acct)
# a last_initial_setup_step > 0
mocks['ServerConfig'].objects.conf = MagicMock(return_value=4)
evennia = self.server.Evennia(MagicMock())
evennia.run_initial_setup()
acct.delete()
@override_settings(DEFAULT_HOME="#1")
def test_run_init_hooks(self):
from evennia.utils import create
obj1 = create.object(key="HookTestObj1")
obj2 = create.object(key="HookTestObj2")
acct1 = create.account("HookAcct1", "hooktest1@test.com", "testpasswd")
acct2 = create.account("HookAcct2", "hooktest2@test.com", "testpasswd")
with patch("evennia.objects.models.ObjectDB") as mockobj:
with patch("evennia.server.server.AccountDB") as mockacct:
mockacct.get_all_cached_instances = MagicMock(return_value=[acct1, acct2])
mockobj.get_all_cached_instances = MagicMock(return_value=[obj1, obj2])
mockobj.objects.clear_all_sessids = MagicMock()
evennia = self.server.Evennia(MagicMock())
evennia.run_init_hooks('reload')
evennia.run_init_hooks('reset')
evennia.run_init_hooks('shutdown')
mockacct.get_all_cached_instances.assert_called()
mockobj.get_all_cached_instances.assert_called()
mockobj.objects.clear_all_sessids.assert_called_with()
@patch('evennia.server.server.INFO_DICT', {"test": "foo"})
def test_get_info_dict(self):
evennia = self.server.Evennia(MagicMock())
self.assertEqual(evennia.get_info_dict(), {"test": "foo"})