Merge branch 'trhr-unittests' into develop

This commit is contained in:
Griatch 2020-05-16 17:05:02 +02:00
commit 5afadb64f3
4 changed files with 54 additions and 1 deletions

View file

View file

@ -2282,7 +2282,7 @@ def main():
# but keep 'evennia' as the name instead of django-admin. This is # but keep 'evennia' as the name instead of django-admin. This is
# an exit condition. # an exit condition.
sys.argv[0] = re.sub(r"(-script\.pyw?|\.exe)?$", "", sys.argv[0]) sys.argv[0] = re.sub(r"(-script\.pyw?|\.exe)?$", "", sys.argv[0])
sys.exit(execute_from_command_line()) sys.exit(execute_from_command_line(sys.argv))
elif not args.tail_log: elif not args.tail_log:
# no input; print evennia info (don't pring if we're tailing log) # no input; print evennia info (don't pring if we're tailing log)

View file

@ -1,3 +1,4 @@
try: try:
from django.utils.unittest import TestCase from django.utils.unittest import TestCase
except ImportError: except ImportError:
@ -12,12 +13,16 @@ import sys
import string import string
import mock import mock
import pickle import pickle
import json
from mock import Mock, MagicMock from mock import Mock, MagicMock
from evennia.server.portal import irc from evennia.server.portal import irc
from evennia.utils.test_resources import EvenniaTest
from twisted.conch.telnet import IAC, WILL, DONT, SB, SE, NAWS, DO from twisted.conch.telnet import IAC, WILL, DONT, SB, SE, NAWS, DO
from twisted.test import proto_helpers from twisted.test import proto_helpers
from twisted.trial.unittest import TestCase as TwistedTestCase from twisted.trial.unittest import TestCase as TwistedTestCase
from twisted.internet.base import DelayedCall
from .telnet import TelnetServerFactory, TelnetProtocol from .telnet import TelnetServerFactory, TelnetProtocol
from .portal import PORTAL_SESSIONS from .portal import PORTAL_SESSIONS
@ -32,6 +37,9 @@ from .telnet_oob import MSDP, MSDP_VAL, MSDP_VAR
from .amp import AMPMultiConnectionProtocol, MsgServer2Portal, MsgPortal2Server, AMP_MAXLEN from .amp import AMPMultiConnectionProtocol, MsgServer2Portal, MsgPortal2Server, AMP_MAXLEN
from .amp_server import AMPServerFactory from .amp_server import AMPServerFactory
from autobahn.twisted.websocket import WebSocketServerFactory
from .webclient import WebSocketClient
class TestAMPServer(TwistedTestCase): class TestAMPServer(TwistedTestCase):
""" """
@ -219,10 +227,12 @@ class TestTelnet(TwistedTestCase):
self.transport = proto_helpers.StringTransport() self.transport = proto_helpers.StringTransport()
self.addCleanup(factory.sessionhandler.disconnect_all) self.addCleanup(factory.sessionhandler.disconnect_all)
@mock.patch("evennia.server.portal.portalsessionhandler.reactor", new=MagicMock())
def test_mudlet_ttype(self): def test_mudlet_ttype(self):
self.transport.client = ["localhost"] self.transport.client = ["localhost"]
self.transport.setTcpKeepAlive = Mock() self.transport.setTcpKeepAlive = Mock()
d = self.proto.makeConnection(self.transport) d = self.proto.makeConnection(self.transport)
# test suppress_ga # test suppress_ga
self.assertTrue(self.proto.protocol_flags["NOGOAHEAD"]) self.assertTrue(self.proto.protocol_flags["NOGOAHEAD"])
self.proto.dataReceived(IAC + DONT + SUPPRESS_GA) self.proto.dataReceived(IAC + DONT + SUPPRESS_GA)
@ -269,3 +279,43 @@ class TestTelnet(TwistedTestCase):
self.proto.nop_keep_alive.stop() self.proto.nop_keep_alive.stop()
self.proto._handshake_delay.cancel() self.proto._handshake_delay.cancel()
return d return d
class TestWebSocket(EvenniaTest):
def setUp(self):
super().setUp()
self.proto = WebSocketClient()
self.proto.factory = WebSocketServerFactory()
self.proto.factory.sessionhandler = PORTAL_SESSIONS
self.proto.sessionhandler = PORTAL_SESSIONS
self.proto.sessionhandler.portal = Mock()
self.proto.transport = proto_helpers.StringTransport()
#self.proto.transport = proto_helpers.FakeDatagramTransport()
self.proto.transport.client = ["localhost"]
self.proto.transport.setTcpKeepAlive = Mock()
self.proto.state = MagicMock()
self.addCleanup(self.proto.factory.sessionhandler.disconnect_all)
DelayedCall.debug = True
def tearDown(self):
super().tearDown()
@mock.patch("evennia.server.portal.portalsessionhandler.reactor", new=MagicMock())
def test_data_in(self):
self.proto.sessionhandler.data_in = MagicMock()
self.proto.onOpen()
msg = json.dumps(["logged_in", (), {}]).encode()
self.proto.onMessage(msg, isBinary=False)
self.proto.sessionhandler.data_in.assert_called_with(self.proto, logged_in=[[], {}])
sendStr = "You can get anything you want at Alice's Restaurant."
msg = json.dumps(["text", (sendStr,), {}]).encode()
self.proto.onMessage(msg, isBinary=False)
self.proto.sessionhandler.data_in.assert_called_with(self.proto, text=[[sendStr], {}])
@mock.patch("evennia.server.portal.portalsessionhandler.reactor", new=MagicMock())
def test_data_out(self):
self.proto.onOpen()
self.proto.sendLine = MagicMock()
msg = json.dumps(["logged_in", (), {}])
self.proto.sessionhandler.data_out(self.proto, text=[["Excepting Alice"], {}])
self.proto.sendLine.assert_called_with(json.dumps(['text', ['Excepting Alice'], {}]))

View file

@ -232,6 +232,9 @@ def create_script(
attributes (list): List if tuples (key, value) or (key, value, category) attributes (list): List if tuples (key, value) or (key, value, category)
(key, value, lockstring) or (key, value, lockstring, default_access). (key, value, lockstring) or (key, value, lockstring, default_access).
Returns:
script (obj): An instance of the script created
See evennia.scripts.manager for methods to manipulate existing See evennia.scripts.manager for methods to manipulate existing
scripts in the database. scripts in the database.