add a test for errbacks
This commit is contained in:
@@ -78,6 +78,8 @@ if os.environ.get('USE_TWISTED', False):
|
|||||||
reply = message.Published(msg.request, self._fake_router_session._request_id_gen.next())
|
reply = message.Published(msg.request, self._fake_router_session._request_id_gen.next())
|
||||||
elif len(msg.topic) == 0:
|
elif len(msg.topic) == 0:
|
||||||
reply = message.Error(message.Publish.MESSAGE_TYPE, msg.request, u'wamp.error.invalid_uri')
|
reply = message.Error(message.Publish.MESSAGE_TYPE, msg.request, u'wamp.error.invalid_uri')
|
||||||
|
elif msg.topic.startswith(u'noreply.'):
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
reply = message.Error(message.Publish.MESSAGE_TYPE, msg.request, u'wamp.error.not_authorized')
|
reply = message.Error(message.Publish.MESSAGE_TYPE, msg.request, u'wamp.error.not_authorized')
|
||||||
|
|
||||||
@@ -190,6 +192,30 @@ if os.environ.get('USE_TWISTED', False):
|
|||||||
publication = yield handler.publish(u'com.myapp.topic1', 1, 2, 3, foo=23, bar='hello', options=types.PublishOptions(exclude_me=False, exclude=[100, 200, 300], retain=True))
|
publication = yield handler.publish(u'com.myapp.topic1', 1, 2, 3, foo=23, bar='hello', options=types.PublishOptions(exclude_me=False, exclude=[100, 200, 300], retain=True))
|
||||||
self.assertEqual(publication, None)
|
self.assertEqual(publication, None)
|
||||||
|
|
||||||
|
@inlineCallbacks
|
||||||
|
def test_publish_outstanding_errors(self):
|
||||||
|
handler = ApplicationSession()
|
||||||
|
transport = MockTransport(handler)
|
||||||
|
|
||||||
|
# this publish will "hang" because 'noreply.' URI is
|
||||||
|
# handled specially in MockTransport; so this request will
|
||||||
|
# be outstanding
|
||||||
|
publication = handler.publish(
|
||||||
|
u'noreply.foo',
|
||||||
|
options=types.PublishOptions(acknowledge=True),
|
||||||
|
)
|
||||||
|
# "leave" the session, which should trigger errbacks on
|
||||||
|
# all outstanding requests.
|
||||||
|
details = types.CloseDetails(reason=u'testing', message=u'how are you?')
|
||||||
|
yield handler.onLeave(details)
|
||||||
|
|
||||||
|
# ensure we got our errback
|
||||||
|
try:
|
||||||
|
yield publication
|
||||||
|
except ApplicationError as e:
|
||||||
|
self.assertEqual(u'testing', e.error)
|
||||||
|
self.assertEqual(u'how are you?', e.message)
|
||||||
|
|
||||||
@inlineCallbacks
|
@inlineCallbacks
|
||||||
def test_publish_acknowledged(self):
|
def test_publish_acknowledged(self):
|
||||||
handler = ApplicationSession()
|
handler = ApplicationSession()
|
||||||
|
|||||||
Reference in New Issue
Block a user