Created
July 1, 2015 08:48
-
-
Save hodgestar/f8ba6758c7bdcb7a0da9 to your computer and use it in GitHub Desktop.
Vxyowsup Test Tweaks (from Atom)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/vxyowsup/tests/test_whatsapp.py b/vxyowsup/tests/test_whatsapp.py | |
index 2f80f2d..73568c8 100644 | |
--- a/vxyowsup/tests/test_whatsapp.py | |
+++ b/vxyowsup/tests/test_whatsapp.py | |
@@ -1,6 +1,7 @@ | |
import base64 | |
-from twisted.internet.defer import inlineCallbacks | |
+from twisted.internet.defer import inlineCallbacks, DeferredQueue | |
+from twisted.internet import reactor | |
from vumi.tests.utils import LogCatcher | |
from vumi.tests.helpers import VumiTestCase | |
@@ -9,7 +10,7 @@ from vumi.errors import ConfigError | |
from vumi.transports.tests.helpers import TransportHelper | |
-from vxyowsup.whatsapp import WhatsAppTransport, StackClient | |
+from vxyowsup.whatsapp import WhatsAppTransport | |
from yowsup.stacks import YowStackBuilder | |
from yowsup.layers.logger import YowLoggerLayer | |
from yowsup.layers import YowLayer | |
@@ -17,20 +18,19 @@ from yowsup.layers.protocol_messages.protocolentities import ( | |
TextMessageProtocolEntity) | |
-class DummyStackBuilder(YowStackBuilder): | |
- @staticmethod | |
- def getCoreLayers(): | |
- return ( | |
- YowLoggerLayer, | |
- TestingLayer, | |
- )[::-1] | |
+@staticmethod | |
+def getDummyCoreLayers(): | |
+ return ( | |
+ YowLoggerLayer, | |
+ TestingLayer, | |
+ )[::-1] | |
class TestWhatsAppTransport(VumiTestCase): | |
@inlineCallbacks | |
def setUp(self): | |
- self.patch(StackClient, 'STACK_BUILDER', DummyStackBuilder) | |
+ self.patch(YowStackBuilder, 'getCoreLayers', getDummyCoreLayers) | |
self.tx_helper = self.add_helper(TransportHelper(WhatsAppTransport)) | |
self.config = { | |
'cc': '27', | |
@@ -39,15 +39,40 @@ class TestWhatsAppTransport(VumiTestCase): | |
} | |
self.transport = yield self.tx_helper.get_transport(self.config) | |
+ self.test_layer = self.transport.stack_client.network_layer | |
- def test_nothing(self): | |
- pass | |
+ def assert_nodes_equal(self, a, b): | |
+ b["id"] = a["id"] | |
+ self.assertEqual(a.toString(), b.toString()) | |
+ | |
+ def assert_ack(self, ack, msg): | |
+ self.assertEqual(ack.payload['event_type'], 'ack') | |
+ self.assertEqual(ack.payload['user_message_id'], msg['message_id']) | |
+ self.assertEqual(ack.payload['sent_message_id'], 'remote-message-id') | |
+ | |
+ @inlineCallbacks | |
+ def test_outbound(self): | |
+ msg = self.tx_helper.make_outbound( | |
+ content="Hello!", to_addr="+1234", from_addr="+5678") | |
+ self.tx_helper.dispatch_outbound(msg) | |
+ sent = yield self.test_layer.sent.get() | |
+ self.assert_nodes_equal( | |
+ sent, | |
+ TextMessageProtocolEntity( | |
+ "Hello!", to="[email protected]").toProtocolTreeNode()) | |
+ [ack] = yield self.tx_helper.wait_for_dispatched_events(1) | |
+ self.assert_ack(ack, msg) | |
class TestingLayer(YowLayer): | |
+ def __init__(self): | |
+ YowLayer.__init__(self) | |
+ self.sent = DeferredQueue() | |
+ | |
def onEvent(self, event): | |
- print event | |
+ print "EVENT!", event | |
+ return True | |
def receive(self, data): | |
# data would've been decrypted bytes, | |
@@ -55,13 +80,14 @@ class TestingLayer(YowLayer): | |
# for convenience | |
# receive from lower (no lower in this layer) | |
# send to upper | |
+ print "RECEIVE!", data | |
self.toUpper(data) | |
def send(self, data): | |
# data is yowsup.structs.protocoltreenode.ProtocolTreeNode | |
# receive from upper | |
# send to lower (no lower in this layer) | |
- print(data) | |
+ reactor.callFromThread(self.sent.put, data) | |
def send_to_transport(self, text, to_address): | |
# method to be used in testing |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment