disco_get_info and disco_get_items should not send their result but return it

darcs-hash:20070708205248-86b55-bcc9d63e8e0e245f633cfe9c3af665e6a4bae547.gz
This commit is contained in:
David Rousselie
2007-07-08 22:52:48 +02:00
parent a566440b97
commit 0139f4beae
2 changed files with 44 additions and 39 deletions

View File

@@ -285,7 +285,8 @@ class JCLComponent(Component, object):
def apply_registered_behavior(self, handlers, stanza, def apply_registered_behavior(self, handlers, stanza,
apply_filter_func=None, apply_filter_func=None,
apply_handle_func=None): apply_handle_func=None,
send_result=True):
"""Execute handler if their filter method does not return None""" """Execute handler if their filter method does not return None"""
result = [] result = []
lang_class = self.lang.get_lang_class_from_node(stanza.get_node()) lang_class = self.lang.get_lang_class_from_node(stanza.get_node())
@@ -322,6 +323,7 @@ class JCLComponent(Component, object):
stanza_type="error", stanza_type="error",
subject=lang_class.error_subject, subject=lang_class.error_subject,
body=lang_class.error_body % (e.message))] body=lang_class.error_body % (e.message))]
if send_result:
self.send_stanzas(result) self.send_stanzas(result)
return result return result
@@ -365,8 +367,12 @@ class JCLComponent(Component, object):
lambda filter_func, stanza, lang_class: \ lambda filter_func, stanza, lang_class: \
filter_func(stanza, lang_class, node), filter_func(stanza, lang_class, node),
lambda handle_func, stanza, lang_class, data, result: \ lambda handle_func, stanza, lang_class, data, result: \
handle_func(stanza, lang_class, node, result, data)) handle_func(stanza, lang_class, node, result, data),
return result send_result=False)
if len(result) > 0:
return result[0]
else:
return None
def disco_get_items(self, node, info_query): def disco_get_items(self, node, info_query):
""" """
@@ -378,8 +384,12 @@ class JCLComponent(Component, object):
lambda filter_func, stanza, lang_class: \ lambda filter_func, stanza, lang_class: \
filter_func(stanza, lang_class, node), filter_func(stanza, lang_class, node),
lambda handle_func, stanza, lang_class, data, result: \ lambda handle_func, stanza, lang_class, data, result: \
handle_func(stanza, lang_class, node, result, data)) handle_func(stanza, lang_class, node, result, data),
return result send_result=False)
if len(result) > 0:
return result[0]
else:
return None
def handle_get_version(self, info_query): def handle_get_version(self, info_query):
"""Get Version handler """Get Version handler

View File

@@ -505,9 +505,8 @@ class JCLComponent_TestCase(unittest.TestCase):
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="jcl.test.com") to_jid="jcl.test.com")
disco_infos = self.comp.disco_get_info(None, info_query) disco_info = self.comp.disco_get_info(None, info_query)
self.assertEquals(len(disco_infos), 1) self.assertEquals(len(self.comp.stream.sent), 0)
disco_info = disco_infos[0]
self.assertEquals(disco_info.get_identities()[0].get_name(), self.comp.name) self.assertEquals(disco_info.get_identities()[0].get_name(), self.comp.name)
self.assertTrue(disco_info.has_feature("jabber:iq:version")) self.assertTrue(disco_info.has_feature("jabber:iq:version"))
self.assertTrue(disco_info.has_feature("jabber:iq:register")) self.assertTrue(disco_info.has_feature("jabber:iq:register"))
@@ -519,9 +518,8 @@ class JCLComponent_TestCase(unittest.TestCase):
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="jcl.test.com") to_jid="jcl.test.com")
disco_infos = self.comp.disco_get_info(None, info_query) disco_info = self.comp.disco_get_info(None, info_query)
self.assertEquals(len(disco_infos), 1) self.assertEquals(len(self.comp.stream.sent), 0)
disco_info = disco_infos[0]
self.assertEquals(disco_info.get_identities()[0].get_name(), self.assertEquals(disco_info.get_identities()[0].get_name(),
self.comp.name) self.comp.name)
self.assertTrue(disco_info.has_feature("jabber:iq:version")) self.assertTrue(disco_info.has_feature("jabber:iq:version"))
@@ -533,9 +531,8 @@ class JCLComponent_TestCase(unittest.TestCase):
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="node_test@jcl.test.com") to_jid="node_test@jcl.test.com")
disco_infos = self.comp.disco_get_info("node_test", info_query) disco_info = self.comp.disco_get_info("node_test", info_query)
self.assertEquals(len(disco_infos), 1) self.assertEquals(len(self.comp.stream.sent), 0)
disco_info = disco_infos[0]
self.assertTrue(disco_info.has_feature("jabber:iq:register")) self.assertTrue(disco_info.has_feature("jabber:iq:register"))
def test_disco_get_info_long_node(self): def test_disco_get_info_long_node(self):
@@ -545,10 +542,9 @@ class JCLComponent_TestCase(unittest.TestCase):
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="node_test@jcl.test.com/node_type") to_jid="node_test@jcl.test.com/node_type")
disco_infos = self.comp.disco_get_info("node_type/node_test", disco_info = self.comp.disco_get_info("node_type/node_test",
info_query) info_query)
self.assertEquals(len(disco_infos), 1) self.assertEquals(len(self.comp.stream.sent), 0)
disco_info = disco_infos[0]
self.assertTrue(disco_info.has_feature("jabber:iq:register")) self.assertTrue(disco_info.has_feature("jabber:iq:register"))
def test_disco_get_info_root_unknown_node(self): def test_disco_get_info_root_unknown_node(self):
@@ -556,7 +552,7 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="jcl.test.com") to_jid="jcl.test.com")
disco_info = self.comp.disco_get_info("unknown", info_query) disco_info = self.comp.disco_get_info("unknown", info_query)
self.assertEquals(disco_info, []) self.assertEquals(disco_info, None)
def test_disco_get_info_command_list(self): def test_disco_get_info_command_list(self):
self.comp.stream = MockStream() self.comp.stream = MockStream()
@@ -564,9 +560,8 @@ class JCLComponent_TestCase(unittest.TestCase):
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="jcl.test.com") to_jid="jcl.test.com")
disco_infos = self.comp.disco_get_info("list", info_query) disco_info = self.comp.disco_get_info("list", info_query)
self.assertEquals(len(disco_infos), 1) self.assertEquals(len(self.comp.stream.sent), 0)
disco_info = disco_infos[0]
self.assertTrue(disco_info.has_feature("http://jabber.org/protocol/commands")) self.assertTrue(disco_info.has_feature("http://jabber.org/protocol/commands"))
self.assertEquals(len(disco_info.get_identities()), 1) self.assertEquals(len(disco_info.get_identities()), 1)
self.assertEquals(disco_info.get_identities()[0].get_category(), self.assertEquals(disco_info.get_identities()[0].get_category(),
@@ -592,8 +587,8 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid = "user1@test.com", \ from_jid = "user1@test.com", \
to_jid = "jcl.test.com") to_jid = "jcl.test.com")
disco_items = self.comp.disco_get_items(None, info_query) disco_items = self.comp.disco_get_items(None, info_query)
self.assertEquals(len(disco_items[0].get_items()), 1) self.assertEquals(len(disco_items.get_items()), 1)
disco_item = disco_items[0].get_items()[0] disco_item = disco_items.get_items()[0]
self.assertEquals(disco_item.get_jid(), account1.jid) self.assertEquals(disco_item.get_jid(), account1.jid)
self.assertEquals(disco_item.get_node(), account1.name) self.assertEquals(disco_item.get_node(), account1.name)
self.assertEquals(disco_item.get_name(), account1.long_name) self.assertEquals(disco_item.get_name(), account1.long_name)
@@ -609,7 +604,7 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="jcl.test.com") to_jid="jcl.test.com")
disco_items = self.comp.disco_get_items("unknown", info_query) disco_items = self.comp.disco_get_items("unknown", info_query)
self.assertEquals(disco_items, []) self.assertEquals(disco_items, None)
def test_disco_get_items_unknown_node_multiple_account_types(self): def test_disco_get_items_unknown_node_multiple_account_types(self):
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
@@ -626,7 +621,7 @@ class JCLComponent_TestCase(unittest.TestCase):
to_jid="jcl.test.com") to_jid="jcl.test.com")
self.comp.account_manager.has_multiple_account_type = True self.comp.account_manager.has_multiple_account_type = True
disco_items = self.comp.disco_get_items("unknown", info_query) disco_items = self.comp.disco_get_items("unknown", info_query)
self.assertEquals(disco_items, []) self.assertEquals(disco_items, None)
def test_disco_get_items_1type_with_node(self): def test_disco_get_items_1type_with_node(self):
"""get_items on an account. Must return nothing""" """get_items on an account. Must return nothing"""
@@ -639,7 +634,7 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="account1@jcl.test.com") to_jid="account1@jcl.test.com")
disco_items = self.comp.disco_get_items("account1", info_query) disco_items = self.comp.disco_get_items("account1", info_query)
self.assertEquals(disco_items, []) self.assertEquals(disco_items, None)
def test_disco_get_items_2types_no_node(self): def test_disco_get_items_2types_no_node(self):
"""get_items on main entity. Must account types""" """get_items on main entity. Must account types"""
@@ -659,14 +654,14 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="jcl.test.com") to_jid="jcl.test.com")
disco_items = self.comp.disco_get_items(None, info_query) disco_items = self.comp.disco_get_items(None, info_query)
self.assertEquals(len(disco_items[0].get_items()), 2) self.assertEquals(len(disco_items.get_items()), 2)
disco_item = disco_items[0].get_items()[0] disco_item = disco_items.get_items()[0]
self.assertEquals(unicode(disco_item.get_jid()), self.assertEquals(unicode(disco_item.get_jid()),
unicode(self.comp.jid) + "/Example") unicode(self.comp.jid) + "/Example")
self.assertEquals(disco_item.get_node(), "Example") self.assertEquals(disco_item.get_node(), "Example")
self.assertEquals(disco_item.get_name(), self.assertEquals(disco_item.get_name(),
LangExample.en.type_example_name) LangExample.en.type_example_name)
disco_item = disco_items[0].get_items()[1] disco_item = disco_items.get_items()[1]
self.assertEquals(unicode(disco_item.get_jid()), self.assertEquals(unicode(disco_item.get_jid()),
unicode(self.comp.jid) + "/Example2") unicode(self.comp.jid) + "/Example2")
self.assertEquals(disco_item.get_node(), "Example2") self.assertEquals(disco_item.get_node(), "Example2")
@@ -699,8 +694,8 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="jcl.test.com/Example") to_jid="jcl.test.com/Example")
disco_items = self.comp.disco_get_items("Example", info_query) disco_items = self.comp.disco_get_items("Example", info_query)
self.assertEquals(len(disco_items[0].get_items()), 1) self.assertEquals(len(disco_items.get_items()), 1)
disco_item = disco_items[0].get_items()[0] disco_item = disco_items.get_items()[0]
self.assertEquals(unicode(disco_item.get_jid()), unicode(account11.jid) + "/Example") self.assertEquals(unicode(disco_item.get_jid()), unicode(account11.jid) + "/Example")
self.assertEquals(disco_item.get_node(), "Example/" + account11.name) self.assertEquals(disco_item.get_node(), "Example/" + account11.name)
self.assertEquals(disco_item.get_name(), account11.long_name) self.assertEquals(disco_item.get_name(), account11.long_name)
@@ -729,8 +724,8 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user2@test.com", from_jid="user2@test.com",
to_jid="jcl.test.com/Example2") to_jid="jcl.test.com/Example2")
disco_items = self.comp.disco_get_items("Example2", info_query) disco_items = self.comp.disco_get_items("Example2", info_query)
self.assertEquals(len(disco_items[0].get_items()), 1) self.assertEquals(len(disco_items.get_items()), 1)
disco_item = disco_items[0].get_items()[0] disco_item = disco_items.get_items()[0]
self.assertEquals(unicode(disco_item.get_jid()), unicode(account22.jid) + "/Example2") self.assertEquals(unicode(disco_item.get_jid()), unicode(account22.jid) + "/Example2")
self.assertEquals(disco_item.get_node(), "Example2/" + account22.name) self.assertEquals(disco_item.get_node(), "Example2/" + account22.name)
self.assertEquals(disco_item.get_name(), account22.long_name) self.assertEquals(disco_item.get_name(), account22.long_name)
@@ -747,7 +742,7 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="account1@jcl.test.com/Example") to_jid="account1@jcl.test.com/Example")
disco_items = self.comp.disco_get_items("Example/account1", info_query) disco_items = self.comp.disco_get_items("Example/account1", info_query)
self.assertEquals(disco_items, []) self.assertEquals(disco_items, None)
def test_disco_get_items_2types_with_long_node2(self): def test_disco_get_items_2types_with_long_node2(self):
"""get_items on a second type account. Must return nothing""" """get_items on a second type account. Must return nothing"""
@@ -761,7 +756,7 @@ class JCLComponent_TestCase(unittest.TestCase):
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="account1@jcl.test.com/Example2") to_jid="account1@jcl.test.com/Example2")
disco_items = self.comp.disco_get_items("Example2/account1", info_query) disco_items = self.comp.disco_get_items("Example2/account1", info_query)
self.assertEquals(disco_items, []) self.assertEquals(disco_items, None)
def test_disco_get_items_list_commands(self): def test_disco_get_items_list_commands(self):
self.comp.stream = MockStream() self.comp.stream = MockStream()
@@ -771,8 +766,8 @@ class JCLComponent_TestCase(unittest.TestCase):
to_jid="jcl.test.com") to_jid="jcl.test.com")
disco_items = self.comp.disco_get_items("http://jabber.org/protocol/commands", disco_items = self.comp.disco_get_items("http://jabber.org/protocol/commands",
info_query) info_query)
self.assertEquals(len(disco_items[0].get_items()), 35) self.assertEquals(len(disco_items.get_items()), 35)
item = disco_items[0].get_items()[0] item = disco_items.get_items()[0]
self.assertEquals(item.get_node(), "list") self.assertEquals(item.get_node(), "list")
self.assertEquals(item.get_name(), Lang.en.command_list) self.assertEquals(item.get_name(), Lang.en.command_list)