More pubsub unit tests!

This commit is contained in:
Lance Stout 2011-08-31 14:05:29 -07:00
parent cc504ab07c
commit 3623a7a16a
3 changed files with 111 additions and 14 deletions

View file

@ -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,

View file

@ -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'

View file

@ -292,14 +292,36 @@ 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()
@ -307,17 +329,95 @@ class TestStreamPubsub(SleekTest):
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)