From 089129f018bb2c335a8813c2da6aeda874110ce7 Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Wed, 16 Apr 2014 13:16:44 +0200 Subject: [PATCH] just log a URL event --- vumi/transports/wechat/tests/test_wechat.py | 25 ++++++++++++++++++++- vumi/transports/wechat/wechat.py | 9 +++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/vumi/transports/wechat/tests/test_wechat.py b/vumi/transports/wechat/tests/test_wechat.py index 2b3cb85a2..76487960b 100644 --- a/vumi/transports/wechat/tests/test_wechat.py +++ b/vumi/transports/wechat/tests/test_wechat.py @@ -8,7 +8,7 @@ from twisted.web.server import NOT_DONE_YET from vumi.tests.helpers import VumiTestCase -from vumi.tests.utils import MockHttpServer +from vumi.tests.utils import MockHttpServer, LogCatcher from vumi.transports.tests.helpers import TransportHelper from vumi.transports.wechat import WeChatTransport from vumi.transports.wechat.errors import WeChatApiException @@ -199,6 +199,29 @@ def test_inbound_menu_event_click_message(self): self.assertEqual(msg['to_addr'], 'toUser@EVENTKEY') + @inlineCallbacks + def test_inbound_menu_event_view_message(self): + transport = yield self.get_transport_with_access_token('foo') + + with LogCatcher() as lc: + resp = yield request( + transport, 'POST', data=""" + + + + 123456789 + + + + + """.strip()) + self.assertEqual(resp.code, http.OK) + [] = self.tx_helper.get_dispatched_inbound() + msg = lc.messages()[0] + self.assertEqual( + msg, + 'fromUser clicked on http://www.gotvafrica.com/mobi/home.aspx') + @inlineCallbacks def test_unsupported_message_type(self): transport = yield self.get_transport_with_access_token('foo') diff --git a/vumi/transports/wechat/wechat.py b/vumi/transports/wechat/wechat.py index 494a61592..800a39b15 100644 --- a/vumi/transports/wechat/wechat.py +++ b/vumi/transports/wechat/wechat.py @@ -287,6 +287,12 @@ def handle_inbound_text_message(self, request, wc_msg): @inlineCallbacks def handle_inbound_event_message(self, request, wc_msg): + if wc_msg.event.lower() in ('view'): + log.msg("%s clicked on %s" % ( + wc_msg.from_user_name, wc_msg.event_key)) + request.finish() + return + if wc_msg.event_key: mask = yield self.cache_addr_mask( wc_msg.from_user_name, wc_msg.event_key) @@ -331,7 +337,8 @@ def handle_finished_request(self, request): self.request_dict.pop(message_id) def queue_request(self, message, request): - self.request_dict[message['message_id']] = request + if message is not None: + self.request_dict[message['message_id']] = request def get_request(self, message_id): return self.request_dict.get(message_id, None)