Further server.py unittests

This commit is contained in:
Griatch 2019-02-10 21:38:56 +01:00
parent e541226c81
commit f2fd5563c7

View file

@ -5,6 +5,7 @@ Test the main server component
from unittest import TestCase
from mock import MagicMock, patch, DEFAULT, call
from django.test import override_settings
from evennia.utils.test_resources import unload_module
@ -19,6 +20,22 @@ class TestServer(TestCase):
from evennia.server import 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):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
@ -126,9 +143,39 @@ class TestServer(TestCase):
evennia = self.server.Evennia(MagicMock())
self.assertEqual(evennia.start_time, 1000)
def test_update_defaults(self):
evennia = self.server.Evennia(MagicMock())
evennia.update_defaults()
@patch("evennia.objects.models.ObjectDB")
@patch("evennia.server.server.AccountDB")
@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):
from evennia.utils.create import create_account
@ -142,3 +189,49 @@ class TestServer(TestCase):
mocks['AccountDB'].objects.get = MagicMock(return_value=acct)
evennia = self.server.Evennia(MagicMock())
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"})