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:
@@ -285,7 +285,8 @@ class JCLComponent(Component, object):
|
||||
|
||||
def apply_registered_behavior(self, handlers, stanza,
|
||||
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"""
|
||||
result = []
|
||||
lang_class = self.lang.get_lang_class_from_node(stanza.get_node())
|
||||
@@ -322,7 +323,8 @@ class JCLComponent(Component, object):
|
||||
stanza_type="error",
|
||||
subject=lang_class.error_subject,
|
||||
body=lang_class.error_body % (e.message))]
|
||||
self.send_stanzas(result)
|
||||
if send_result:
|
||||
self.send_stanzas(result)
|
||||
return result
|
||||
|
||||
def handle_get_gateway(self, info_query):
|
||||
@@ -365,8 +367,12 @@ class JCLComponent(Component, object):
|
||||
lambda filter_func, stanza, lang_class: \
|
||||
filter_func(stanza, lang_class, node),
|
||||
lambda handle_func, stanza, lang_class, data, result: \
|
||||
handle_func(stanza, lang_class, node, result, data))
|
||||
return result
|
||||
handle_func(stanza, lang_class, node, result, data),
|
||||
send_result=False)
|
||||
if len(result) > 0:
|
||||
return result[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
def disco_get_items(self, node, info_query):
|
||||
"""
|
||||
@@ -378,8 +384,12 @@ class JCLComponent(Component, object):
|
||||
lambda filter_func, stanza, lang_class: \
|
||||
filter_func(stanza, lang_class, node),
|
||||
lambda handle_func, stanza, lang_class, data, result: \
|
||||
handle_func(stanza, lang_class, node, result, data))
|
||||
return result
|
||||
handle_func(stanza, lang_class, node, result, data),
|
||||
send_result=False)
|
||||
if len(result) > 0:
|
||||
return result[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
def handle_get_version(self, info_query):
|
||||
"""Get Version handler
|
||||
|
||||
@@ -505,9 +505,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
info_query = Iq(stanza_type="get",
|
||||
from_jid="user1@test.com",
|
||||
to_jid="jcl.test.com")
|
||||
disco_infos = self.comp.disco_get_info(None, info_query)
|
||||
self.assertEquals(len(disco_infos), 1)
|
||||
disco_info = disco_infos[0]
|
||||
disco_info = self.comp.disco_get_info(None, info_query)
|
||||
self.assertEquals(len(self.comp.stream.sent), 0)
|
||||
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:register"))
|
||||
@@ -519,9 +518,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
info_query = Iq(stanza_type="get",
|
||||
from_jid="user1@test.com",
|
||||
to_jid="jcl.test.com")
|
||||
disco_infos = self.comp.disco_get_info(None, info_query)
|
||||
self.assertEquals(len(disco_infos), 1)
|
||||
disco_info = disco_infos[0]
|
||||
disco_info = self.comp.disco_get_info(None, info_query)
|
||||
self.assertEquals(len(self.comp.stream.sent), 0)
|
||||
self.assertEquals(disco_info.get_identities()[0].get_name(),
|
||||
self.comp.name)
|
||||
self.assertTrue(disco_info.has_feature("jabber:iq:version"))
|
||||
@@ -533,9 +531,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
info_query = Iq(stanza_type="get",
|
||||
from_jid="user1@test.com",
|
||||
to_jid="node_test@jcl.test.com")
|
||||
disco_infos = self.comp.disco_get_info("node_test", info_query)
|
||||
self.assertEquals(len(disco_infos), 1)
|
||||
disco_info = disco_infos[0]
|
||||
disco_info = self.comp.disco_get_info("node_test", info_query)
|
||||
self.assertEquals(len(self.comp.stream.sent), 0)
|
||||
self.assertTrue(disco_info.has_feature("jabber:iq:register"))
|
||||
|
||||
def test_disco_get_info_long_node(self):
|
||||
@@ -545,10 +542,9 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
info_query = Iq(stanza_type="get",
|
||||
from_jid="user1@test.com",
|
||||
to_jid="node_test@jcl.test.com/node_type")
|
||||
disco_infos = self.comp.disco_get_info("node_type/node_test",
|
||||
info_query)
|
||||
self.assertEquals(len(disco_infos), 1)
|
||||
disco_info = disco_infos[0]
|
||||
disco_info = self.comp.disco_get_info("node_type/node_test",
|
||||
info_query)
|
||||
self.assertEquals(len(self.comp.stream.sent), 0)
|
||||
self.assertTrue(disco_info.has_feature("jabber:iq:register"))
|
||||
|
||||
def test_disco_get_info_root_unknown_node(self):
|
||||
@@ -556,7 +552,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user1@test.com",
|
||||
to_jid="jcl.test.com")
|
||||
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):
|
||||
self.comp.stream = MockStream()
|
||||
@@ -564,9 +560,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
info_query = Iq(stanza_type="get",
|
||||
from_jid="user1@test.com",
|
||||
to_jid="jcl.test.com")
|
||||
disco_infos = self.comp.disco_get_info("list", info_query)
|
||||
self.assertEquals(len(disco_infos), 1)
|
||||
disco_info = disco_infos[0]
|
||||
disco_info = self.comp.disco_get_info("list", info_query)
|
||||
self.assertEquals(len(self.comp.stream.sent), 0)
|
||||
self.assertTrue(disco_info.has_feature("http://jabber.org/protocol/commands"))
|
||||
self.assertEquals(len(disco_info.get_identities()), 1)
|
||||
self.assertEquals(disco_info.get_identities()[0].get_category(),
|
||||
@@ -592,8 +587,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid = "user1@test.com", \
|
||||
to_jid = "jcl.test.com")
|
||||
disco_items = self.comp.disco_get_items(None, info_query)
|
||||
self.assertEquals(len(disco_items[0].get_items()), 1)
|
||||
disco_item = disco_items[0].get_items()[0]
|
||||
self.assertEquals(len(disco_items.get_items()), 1)
|
||||
disco_item = disco_items.get_items()[0]
|
||||
self.assertEquals(disco_item.get_jid(), account1.jid)
|
||||
self.assertEquals(disco_item.get_node(), account1.name)
|
||||
self.assertEquals(disco_item.get_name(), account1.long_name)
|
||||
@@ -609,7 +604,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user1@test.com",
|
||||
to_jid="jcl.test.com")
|
||||
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):
|
||||
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
|
||||
@@ -626,7 +621,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
to_jid="jcl.test.com")
|
||||
self.comp.account_manager.has_multiple_account_type = True
|
||||
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):
|
||||
"""get_items on an account. Must return nothing"""
|
||||
@@ -639,7 +634,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user1@test.com",
|
||||
to_jid="account1@jcl.test.com")
|
||||
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):
|
||||
"""get_items on main entity. Must account types"""
|
||||
@@ -659,14 +654,14 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user1@test.com",
|
||||
to_jid="jcl.test.com")
|
||||
disco_items = self.comp.disco_get_items(None, info_query)
|
||||
self.assertEquals(len(disco_items[0].get_items()), 2)
|
||||
disco_item = disco_items[0].get_items()[0]
|
||||
self.assertEquals(len(disco_items.get_items()), 2)
|
||||
disco_item = disco_items.get_items()[0]
|
||||
self.assertEquals(unicode(disco_item.get_jid()),
|
||||
unicode(self.comp.jid) + "/Example")
|
||||
self.assertEquals(disco_item.get_node(), "Example")
|
||||
self.assertEquals(disco_item.get_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()),
|
||||
unicode(self.comp.jid) + "/Example2")
|
||||
self.assertEquals(disco_item.get_node(), "Example2")
|
||||
@@ -699,8 +694,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user1@test.com",
|
||||
to_jid="jcl.test.com/Example")
|
||||
disco_items = self.comp.disco_get_items("Example", info_query)
|
||||
self.assertEquals(len(disco_items[0].get_items()), 1)
|
||||
disco_item = disco_items[0].get_items()[0]
|
||||
self.assertEquals(len(disco_items.get_items()), 1)
|
||||
disco_item = disco_items.get_items()[0]
|
||||
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_name(), account11.long_name)
|
||||
@@ -729,8 +724,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user2@test.com",
|
||||
to_jid="jcl.test.com/Example2")
|
||||
disco_items = self.comp.disco_get_items("Example2", info_query)
|
||||
self.assertEquals(len(disco_items[0].get_items()), 1)
|
||||
disco_item = disco_items[0].get_items()[0]
|
||||
self.assertEquals(len(disco_items.get_items()), 1)
|
||||
disco_item = disco_items.get_items()[0]
|
||||
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_name(), account22.long_name)
|
||||
@@ -747,7 +742,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user1@test.com",
|
||||
to_jid="account1@jcl.test.com/Example")
|
||||
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):
|
||||
"""get_items on a second type account. Must return nothing"""
|
||||
@@ -761,7 +756,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
from_jid="user1@test.com",
|
||||
to_jid="account1@jcl.test.com/Example2")
|
||||
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):
|
||||
self.comp.stream = MockStream()
|
||||
@@ -771,8 +766,8 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
to_jid="jcl.test.com")
|
||||
disco_items = self.comp.disco_get_items("http://jabber.org/protocol/commands",
|
||||
info_query)
|
||||
self.assertEquals(len(disco_items[0].get_items()), 35)
|
||||
item = disco_items[0].get_items()[0]
|
||||
self.assertEquals(len(disco_items.get_items()), 35)
|
||||
item = disco_items.get_items()[0]
|
||||
self.assertEquals(item.get_node(), "list")
|
||||
self.assertEquals(item.get_name(), Lang.en.command_list)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user