summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2011-09-01 11:19:25 -0700
committerLance Stout <lancestout@gmail.com>2011-09-01 11:19:25 -0700
commitec01e45ed1f811a88c39f17f92a30f2f225a6ebc (patch)
tree4f2bb8c93b0a400fbcb35d280dee26f2908c88da
parent993829b23f923bc76aa0680977b34995105752ae (diff)
downloadslixmpp-ec01e45ed1f811a88c39f17f92a30f2f225a6ebc.tar.gz
slixmpp-ec01e45ed1f811a88c39f17f92a30f2f225a6ebc.tar.bz2
slixmpp-ec01e45ed1f811a88c39f17f92a30f2f225a6ebc.tar.xz
slixmpp-ec01e45ed1f811a88c39f17f92a30f2f225a6ebc.zip
Add ability for a user to get retrieve subscriptions, with tests.
-rw-r--r--sleekxmpp/plugins/xep_0060/pubsub.py6
-rw-r--r--sleekxmpp/plugins/xep_0060/stanza/pubsub.py2
-rw-r--r--tests/test_stream_xep_0060.py30
3 files changed, 36 insertions, 2 deletions
diff --git a/sleekxmpp/plugins/xep_0060/pubsub.py b/sleekxmpp/plugins/xep_0060/pubsub.py
index 788d3397..990e8241 100644
--- a/sleekxmpp/plugins/xep_0060/pubsub.py
+++ b/sleekxmpp/plugins/xep_0060/pubsub.py
@@ -171,6 +171,12 @@ class xep_0060(base_plugin):
iq['pubsub']['unsubscribe']['subid'] = subid
return iq.send(block=block, callback=callback, timeout=timeout)
+ def get_subscriptions(self, jid, node=None, ifrom=None, block=True,
+ callback=None, timeout=None):
+ iq = self.xmpp.Iq(sto=jid, sfrom=ifrom, stype='get')
+ iq['pubsub']['subscriptions']['node'] = node
+ return iq.send(block=block, callback=callback, timeout=timeout)
+
def get_subscription_options(self, jid, node, user_jid, ifrom=None,
block=True, callback=None, timeout=None):
iq = self.xmpp.Iq(sto=jid, sfrom=ifrom, stype='get')
diff --git a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py
index d62fc661..0cbb7388 100644
--- a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py
+++ b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py
@@ -65,7 +65,7 @@ class Subscriptions(ElementBase):
namespace = 'http://jabber.org/protocol/pubsub'
name = 'subscriptions'
plugin_attrib = 'subscriptions'
- interfaces = set(tuple())
+ interfaces = set(('node',))
plugin_attrib_map = {}
plugin_tag_map = {}
subitem = (Subscription,)
diff --git a/tests/test_stream_xep_0060.py b/tests/test_stream_xep_0060.py
index 9ba01468..1ace0f96 100644
--- a/tests/test_stream_xep_0060.py
+++ b/tests/test_stream_xep_0060.py
@@ -626,7 +626,7 @@ class TestStreamPubsub(SleekTest):
""")
def testGetNodeSubscriptions(self):
- """Test retrieving the subscriptions for a node."""
+ """Test retrieving all subscriptions for a node."""
self.xmpp['xep_0060'].get_node_subscriptions(
'pubsub.example.com',
'somenode',
@@ -639,4 +639,32 @@ class TestStreamPubsub(SleekTest):
</iq>
""")
+ def testGetSubscriptions(self):
+ """Test retrieving a users's subscriptions."""
+ self.xmpp['xep_0060'].get_subscriptions(
+ 'pubsub.example.com',
+ block=False)
+ self.send("""
+ <iq type="get" id="1" to="pubsub.example.com">
+ <pubsub xmlns="http://jabber.org/protocol/pubsub">
+ <subscriptions />
+ </pubsub>
+ </iq>
+ """)
+
+ def testGetSubscriptionsForNode(self):
+ """Test retrieving a users's subscriptions for a given node."""
+ self.xmpp['xep_0060'].get_subscriptions(
+ 'pubsub.example.com',
+ node='somenode',
+ block=False)
+ self.send("""
+ <iq type="get" id="1" to="pubsub.example.com">
+ <pubsub xmlns="http://jabber.org/protocol/pubsub">
+ <subscriptions node="somenode" />
+ </pubsub>
+ </iq>
+ """)
+
+
suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamPubsub)