summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sleekxmpp/plugins/xep_0060/pubsub.py7
-rw-r--r--sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py10
-rw-r--r--tests/test_stream_xep_0060.py108
3 files changed, 111 insertions, 14 deletions
diff --git a/sleekxmpp/plugins/xep_0060/pubsub.py b/sleekxmpp/plugins/xep_0060/pubsub.py
index a891573e..cb6cbacd 100644
--- a/sleekxmpp/plugins/xep_0060/pubsub.py
+++ b/sleekxmpp/plugins/xep_0060/pubsub.py
@@ -206,7 +206,10 @@ class xep_0060(base_plugin):
be executed when a reply stanza is received.
"""
iq = self.xmpp.Iq(sto=jid, sfrom=ifrom, stype='get')
- iq['pubsub_owner']['default']['node'] = node
+ if node is None:
+ iq['pubsub_owner']['default']
+ else:
+ iq['pubsub_owner']['configure']['node'] = node
return iq.send(block=block, callback=callback, timeout=timeout)
def get_node_subscriptions(self, jid, node, ifrom=None, block=True,
@@ -276,7 +279,7 @@ class xep_0060(base_plugin):
callback=None, timeout=None):
iq = self.xmpp.Iq(sto=jid, sfrom=ifrom, stype='set')
iq['pubsub_owner']['configure']['node'] = node
- iq['pubsub_owner']['configure']['config'] = config
+ iq['pubsub_owner']['configure']['form'].values = config.values
return iq.send(block=block, callback=callback, timeout=timeout)
def publish(self, jid, node, item_id=None, payload=None, items=None,
diff --git a/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py b/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py
index 55dd59d1..570c9c4a 100644
--- a/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py
+++ b/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py
@@ -63,18 +63,12 @@ class OwnerConfigure(Configure):
name = 'configure'
plugin_attrib = 'configure'
namespace = 'http://jabber.org/protocol/pubsub#owner'
- interfaces = set(('node', 'config'))
+ interfaces = set(('node',))
plugin_attrib_map = {}
plugin_tag_map = {}
- def getConfig(self):
- return self['form']
-
- def setConfig(self, value):
- self['form'].setStanzaValues(value.getStanzaValues())
- return self
-
registerStanzaPlugin(PubsubOwner, OwnerConfigure)
+registerStanzaPlugin(OwnerConfigure, xep_0004.Form)
class OwnerDefault(OwnerConfigure):
namespace = 'http://jabber.org/protocol/pubsub#owner'
diff --git a/tests/test_stream_xep_0060.py b/tests/test_stream_xep_0060.py
index 15ed06ce..e128eff5 100644
--- a/tests/test_stream_xep_0060.py
+++ b/tests/test_stream_xep_0060.py
@@ -292,32 +292,132 @@ class TestStreamPubsub(SleekTest):
self.recv("""
<iq type="result" id="1"
- to="foo@comp.example.com/bar" from="pubsub.example.com" />
+ to="tester@localhost" from="pubsub.example.com" />
""")
t.join()
def testGetDefaultNodeConfig(self):
- """Tes t retrieving the default config for a given node."""
+ """Test retrieving the default node config for a pubsub service."""
t = threading.Thread(name='default_config',
target=self.xmpp['xep_0060'].get_node_config,
+ args=('pubsub.example.com', None))
+ t.start()
+
+ self.send("""
+ <iq type="get" id="1" to="pubsub.example.com">
+ <pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
+ <default />
+ </pubsub>
+ </iq>
+ """, use_values=False)
+
+ self.recv("""
+ <iq type="result" id="1"
+ to="tester@localhost" from="pubsub.example.com" />
+ """)
+
+ t.join()
+
+ def testGetNodeConfig(self):
+ """Test getting the config for a given node."""
+ t = threading.Thread(name='node_config',
+ target=self.xmpp['xep_0060'].get_node_config,
args=('pubsub.example.com', 'somenode'))
t.start()
self.send("""
<iq type="get" id="1" to="pubsub.example.com">
<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
- <default node="somenode" />
+ <configure node="somenode" />
</pubsub>
</iq>
""", use_values=False)
self.recv("""
<iq type="result" id="1"
- to="foo@comp.example.com/bar" from="pubsub.example.com" />
+ to="tester@localhost" from="pubsub.example.com" />
+ """)
+
+ t.join()
+
+ def testSetNodeConfig(self):
+ """Test setting the configuration for a node."""
+ form = self.xmpp['xep_0004'].make_form()
+ form.add_field(var='FORM_TYPE', ftype='hidden',
+ value='http://jabber.org/protocol/pubsub#node_config')
+ form.add_field(var='pubsub#title', ftype='text-single',
+ value='This is awesome!')
+ form['type'] = 'submit'
+
+ t = threading.Thread(name='set_config',
+ target=self.xmpp['xep_0060'].set_node_config,
+ args=('pubsub.example.com', 'somenode', form))
+ t.start()
+
+ self.send("""
+ <iq type="set" id="1" to="pubsub.example.com">
+ <pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
+ <configure node="somenode">
+ <x xmlns="jabber:x:data" type="submit">
+ <field var="FORM_TYPE">
+ <value>http://jabber.org/protocol/pubsub#node_config</value>
+ </field>
+ <field var="pubsub#title">
+ <value>This is awesome!</value>
+ </field>
+ </x>
+ </configure>
+ </pubsub>
+ </iq>
+ """)
+
+ self.recv("""
+ <iq type="result" id="1"
+ to="tester@localhost" from="pubsub.example.com" />
""")
t.join()
+ def testPublishSingle(self):
+ """Test publishing a single item."""
+ pass
+
+ def testPublishSingleOptions(self):
+ """Test publishing a single item, with options."""
+
+
+ def testPublishMulti(self):
+ """Test publishing multiple items."""
+ pass
+
+ def testPublishMultiOptions(self):
+ """Test publishing multiple items, with options."""
+ pass
+
+ def testRetract(self):
+ """Test deleting an item."""
+ pass
+
+ def testPurge(self):
+ """Test removing all items from a node."""
+ pass
+
+ def testGetItem(self):
+ """Test retrieving a single item."""
+ pass
+
+ def testGetLatestItems(self):
+ """Test retrieving the most recent N items."""
+ pass
+
+ def testGetAllItems(self):
+ """Test retrieving all items."""
+ pass
+
+ def testGetSpecificItems(self):
+ """Test retrieving a specific set of items."""
+ pass
+
suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamPubsub)