diff --git a/sleekxmpp/plugins/xep_0060/pubsub.py b/sleekxmpp/plugins/xep_0060/pubsub.py
index a891573..cb6cbac 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 55dd59d..570c9c4 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 15ed06c..e128eff 100644
--- a/tests/test_stream_xep_0060.py
+++ b/tests/test_stream_xep_0060.py
@@ -292,14 +292,36 @@ class TestStreamPubsub(SleekTest):
self.recv("""
+ 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("""
+
+
+
+
+
+ """, use_values=False)
+
+ self.recv("""
+
+ """)
+
+ 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()
@@ -307,17 +329,95 @@ class TestStreamPubsub(SleekTest):
self.send("""
-
+
""", use_values=False)
self.recv("""
+ 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("""
+
+
+
+
+
+ http://jabber.org/protocol/pubsub#node_config
+
+
+ This is awesome!
+
+
+
+
+
+ """)
+
+ self.recv("""
+
+ """)
+
+ 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)