Fixed bug in presence subscription handling.
Subscription requests and responses were not setting the correct 'to' attribute.
This commit is contained in:
parent
46ffa8e9fe
commit
ac330b5c6c
2 changed files with 44 additions and 2 deletions
|
@ -621,8 +621,8 @@ class BaseXMPP(XMLStream):
|
||||||
None * Disable automatic handling and use
|
None * Disable automatic handling and use
|
||||||
a custom handler.
|
a custom handler.
|
||||||
"""
|
"""
|
||||||
presence = self.Presence()
|
presence.reply()
|
||||||
presence['to'] = presence['from'].bare
|
presence['to'] = presence['to'].bare
|
||||||
|
|
||||||
# We are using trinary logic, so conditions have to be
|
# We are using trinary logic, so conditions have to be
|
||||||
# more explicit than usual.
|
# more explicit than usual.
|
||||||
|
|
|
@ -82,5 +82,47 @@ class TestStreamPresence(SleekTest):
|
||||||
self.assertEqual(events, ['got_offline'],
|
self.assertEqual(events, ['got_offline'],
|
||||||
"Got offline incorrectly triggered: %s" % events)
|
"Got offline incorrectly triggered: %s" % events)
|
||||||
|
|
||||||
|
def testAutoAuthorizeAndSubscribe(self):
|
||||||
|
"""
|
||||||
|
Test auto authorizing and auto subscribing
|
||||||
|
to subscription requests.
|
||||||
|
"""
|
||||||
|
|
||||||
|
events = set()
|
||||||
|
|
||||||
|
def presence_subscribe(p):
|
||||||
|
events.add('presence_subscribe')
|
||||||
|
|
||||||
|
def changed_subscription(p):
|
||||||
|
events.add('changed_subscription')
|
||||||
|
|
||||||
|
self.stream_start(jid='tester@localhost')
|
||||||
|
|
||||||
|
self.xmpp.add_event_handler('changed_subscription',
|
||||||
|
changed_subscription)
|
||||||
|
self.xmpp.add_event_handler('presence_subscribe',
|
||||||
|
presence_subscribe)
|
||||||
|
|
||||||
|
# With these settings we should accept a subscription
|
||||||
|
# and request a subscription in return.
|
||||||
|
self.xmpp.auto_authorize = True
|
||||||
|
self.xmpp.auto_subscribe = True
|
||||||
|
|
||||||
|
self.stream_recv("""
|
||||||
|
<presence from="user@localhost" type="subscribe" />
|
||||||
|
""")
|
||||||
|
|
||||||
|
self.stream_send_presence("""
|
||||||
|
<presence to="user@localhost" type="subscribed" />
|
||||||
|
""")
|
||||||
|
|
||||||
|
self.stream_send_presence("""
|
||||||
|
<presence to="user@localhost" type="subscribe" />
|
||||||
|
""")
|
||||||
|
|
||||||
|
expected = set(('presence_subscribe', 'changed_subscription'))
|
||||||
|
self.assertEqual(events, expected,
|
||||||
|
"Incorrect events triggered: %s" % events)
|
||||||
|
|
||||||
|
|
||||||
suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamPresence)
|
suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamPresence)
|
||||||
|
|
Loading…
Reference in a new issue