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
# an exit condition.
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:
# no input; print evennia info (don't pring if we're tailing log)

View file

@ -1,3 +1,4 @@
try:
from django.utils.unittest import TestCase
except ImportError:
@ -12,12 +13,16 @@ import sys
import string
import mock
import pickle
import json
from mock import Mock, MagicMock
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.test import proto_helpers
from twisted.trial.unittest import TestCase as TwistedTestCase
from twisted.internet.base import DelayedCall
from .telnet import TelnetServerFactory, TelnetProtocol
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_server import AMPServerFactory
from autobahn.twisted.websocket import WebSocketServerFactory
from .webclient import WebSocketClient
class TestAMPServer(TwistedTestCase):
"""
@ -219,10 +227,12 @@ class TestTelnet(TwistedTestCase):
self.transport = proto_helpers.StringTransport()
self.addCleanup(factory.sessionhandler.disconnect_all)
@mock.patch("evennia.server.portal.portalsessionhandler.reactor", new=MagicMock())
def test_mudlet_ttype(self):
self.transport.client = ["localhost"]
self.transport.setTcpKeepAlive = Mock()
d = self.proto.makeConnection(self.transport)
# test suppress_ga
self.assertTrue(self.proto.protocol_flags["NOGOAHEAD"])
self.proto.dataReceived(IAC + DONT + SUPPRESS_GA)
@ -269,3 +279,43 @@ class TestTelnet(TwistedTestCase):
self.proto.nop_keep_alive.stop()
self.proto._handshake_delay.cancel()
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)
(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
scripts in the database.