Merge branch 'unittests' of https://github.com/trhr/evennia into trhr-unittests

This commit is contained in:
Griatch 2020-05-16 15:49:32 +02:00
commit d43343a9d1

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,8 +13,11 @@ 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
@ -32,6 +36,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):
""" """
@ -269,3 +276,40 @@ 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 WebSocket(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)
def tearDown(self):
super().tearDown()
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], {}])
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'], {}]))