Add node attribut to disco query responses

darcs-hash:20080304204116-86b55-6a6d4b30058b5d4cd64a5c8b050f61987fd7aba9.gz
This commit is contained in:
David Rousselie
2008-03-04 21:41:16 +01:00
parent cb060c0733
commit e1c2cd070d
4 changed files with 37 additions and 35 deletions

View File

@@ -1263,7 +1263,7 @@ class CommandDiscoGetInfoHandler(DiscoHandler):
Return infos for given command Return infos for given command
""" """
if not disco_obj: if not disco_obj:
disco_obj = DiscoInfo() disco_obj = DiscoInfo(node)
return [command_manager.get_command_info(disco_info=disco_obj, return [command_manager.get_command_info(disco_info=disco_obj,
command_name=node, command_name=node,
lang_class=lang_class)] lang_class=lang_class)]
@@ -1281,7 +1281,7 @@ class CommandDiscoGetItemsHandler(DiscoHandler):
""" """
""" """
if not disco_obj: if not disco_obj:
disco_obj = DiscoItems() disco_obj = DiscoItems(node)
return [command_manager.list_commands(jid=info_query.get_from(), return [command_manager.list_commands(jid=info_query.get_from(),
to_jid=info_query.get_to(), to_jid=info_query.get_to(),
disco_items=disco_obj, disco_items=disco_obj,

View File

@@ -52,7 +52,7 @@ class RootDiscoGetInfoHandler(DiscoHandler):
def handle(self, stanza, lang_class, node, disco_obj, data): def handle(self, stanza, lang_class, node, disco_obj, data):
"""Implement discovery get_info on main component JID""" """Implement discovery get_info on main component JID"""
self.__logger.debug("root_disco_get_info") self.__logger.debug("root_disco_get_info")
disco_info = DiscoInfo() disco_info = DiscoInfo(node)
disco_info.add_feature("jabber:iq:version") disco_info.add_feature("jabber:iq:version")
disco_info.add_feature("http://jabber.org/protocol/disco#info") disco_info.add_feature("http://jabber.org/protocol/disco#info")
disco_info.add_feature("http://jabber.org/protocol/disco#items") disco_info.add_feature("http://jabber.org/protocol/disco#items")
@@ -74,7 +74,7 @@ class AccountDiscoGetInfoHandler(DiscoHandler):
def handle(self, stanza, lang_class, node, disco_obj, data): def handle(self, stanza, lang_class, node, disco_obj, data):
"""Implement discovery get_info on an account node""" """Implement discovery get_info on an account node"""
self.__logger.debug("account_disco_get_info") self.__logger.debug("account_disco_get_info")
disco_info = DiscoInfo() disco_info = DiscoInfo(node)
disco_info.add_feature("jabber:iq:register") disco_info.add_feature("jabber:iq:register")
return [disco_info] return [disco_info]
@@ -101,7 +101,7 @@ class RootDiscoGetItemsHandler(DiscoHandler):
return None return None
disco_items = None disco_items = None
if self.component.account_manager.has_multiple_account_type: # list accounts with only one type declared if self.component.account_manager.has_multiple_account_type: # list accounts with only one type declared
disco_items = DiscoItems() disco_items = DiscoItems(node)
for (account_type, type_label) in \ for (account_type, type_label) in \
self.component.account_manager.list_account_types(lang_class): self.component.account_manager.list_account_types(lang_class):
DiscoItem(disco_items, DiscoItem(disco_items,
@@ -111,7 +111,7 @@ class RootDiscoGetItemsHandler(DiscoHandler):
type_label) type_label)
else: else:
disco_items = DiscoItems() disco_items = DiscoItems(node)
for (_account, resource, account_type) in \ for (_account, resource, account_type) in \
self.component.account_manager.list_accounts(unicode(from_jid.bare())): self.component.account_manager.list_accounts(unicode(from_jid.bare())):
DiscoItem(disco_items, DiscoItem(disco_items,
@@ -135,7 +135,7 @@ class AccountTypeDiscoGetItemsHandler(DiscoHandler):
self.__logger.debug("Listing account for " + account_type) self.__logger.debug("Listing account for " + account_type)
account_class = self.component.account_manager.get_account_class(account_type) account_class = self.component.account_manager.get_account_class(account_type)
if account_class is not None: if account_class is not None:
disco_items = DiscoItems() disco_items = DiscoItems(node)
for (_account, resource, account_type) in \ for (_account, resource, account_type) in \
self.component.account_manager.list_accounts(unicode(from_jid.bare()), self.component.account_manager.list_accounts(unicode(from_jid.bare()),
account_class, account_class,

View File

@@ -94,6 +94,7 @@ class CommandManager_TestCase(unittest.TestCase):
to_jid=JID("jcl.test.com"), to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(), disco_items=DiscoItems(),
lang_class=Lang.en) lang_class=Lang.en)
self.assertEquals(disco_items.get_node(), None)
items = disco_items.get_items() items = disco_items.get_items()
self.assertEquals(len(items), 1) self.assertEquals(len(items), 1)
self.assertEquals(items[0].get_node(), "command2") self.assertEquals(items[0].get_node(), "command2")
@@ -117,8 +118,9 @@ class CommandManager_TestCase(unittest.TestCase):
disco_items = command.command_manager.list_commands(\ disco_items = command.command_manager.list_commands(\
jid=JID("user@test.com"), jid=JID("user@test.com"),
to_jid=JID("jcl.test.com/Example"), to_jid=JID("jcl.test.com/Example"),
disco_items=DiscoItems(), disco_items=DiscoItems("Example"),
lang_class=Lang.en) lang_class=Lang.en)
self.assertEquals(disco_items.get_node(), "Example")
items = disco_items.get_items() items = disco_items.get_items()
self.assertEquals(len(items), 1) self.assertEquals(len(items), 1)
self.assertEquals(items[0].get_node(), "command12") self.assertEquals(items[0].get_node(), "command12")
@@ -142,8 +144,9 @@ class CommandManager_TestCase(unittest.TestCase):
disco_items = command.command_manager.list_commands(\ disco_items = command.command_manager.list_commands(\
jid=JID("user@test.com"), jid=JID("user@test.com"),
to_jid=JID("account@jcl.test.com/Example"), to_jid=JID("account@jcl.test.com/Example"),
disco_items=DiscoItems(), disco_items=DiscoItems("Example/account1"),
lang_class=Lang.en) lang_class=Lang.en)
self.assertEquals(disco_items.get_node(), "Example/account1")
items = disco_items.get_items() items = disco_items.get_items()
self.assertEquals(len(items), 1) self.assertEquals(len(items), 1)
self.assertEquals(items[0].get_node(), "command22") self.assertEquals(items[0].get_node(), "command22")
@@ -161,6 +164,7 @@ class CommandManager_TestCase(unittest.TestCase):
to_jid=JID("jcl.test.com"), to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(), disco_items=DiscoItems(),
lang_class=Lang.en) lang_class=Lang.en)
self.assertEquals(disco_items.get_node(), None)
items = disco_items.get_items() items = disco_items.get_items()
self.assertEquals(len(items), 2) self.assertEquals(len(items), 2)
self.assertEquals(items[0].get_node(), "command1") self.assertEquals(items[0].get_node(), "command1")
@@ -181,6 +185,7 @@ class CommandManager_TestCase(unittest.TestCase):
to_jid=JID("jcl.test.com"), to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(), disco_items=DiscoItems(),
lang_class=Lang.en) lang_class=Lang.en)
self.assertEquals(disco_items.get_node(), None)
items = disco_items.get_items() items = disco_items.get_items()
self.assertEquals(len(items), 2) self.assertEquals(len(items), 2)
self.assertEquals(items[0].get_node(), "command1") self.assertEquals(items[0].get_node(), "command1")
@@ -325,9 +330,8 @@ class CommandManager_TestCase(unittest.TestCase):
"command") "command")
command_node.setProp("node", command_node.setProp("node",
"command1") "command1")
result = command.command_manager.execute_multi_step_command(info_query, result = command.command_manager.execute_multi_step_command(\
"command1", info_query, "command1", None)
None)
self.assertEquals(result[0].get_type(), "error") self.assertEquals(result[0].get_type(), "error")
child = result[0].xmlnode.children child = result[0].xmlnode.children
self.assertEquals(child.name, "command") self.assertEquals(child.name, "command")

View File

@@ -499,6 +499,7 @@ class JCLComponent_TestCase(JCLTestCase):
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(None, info_query) disco_info = self.comp.disco_get_info(None, info_query)
self.assertEquals(disco_info.get_node(), None)
self.assertEquals(len(self.comp.stream.sent), 0) self.assertEquals(len(self.comp.stream.sent), 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"))
@@ -512,6 +513,7 @@ class JCLComponent_TestCase(JCLTestCase):
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(None, info_query) disco_info = self.comp.disco_get_info(None, info_query)
self.assertEquals(disco_info.get_node(), None)
self.assertEquals(len(self.comp.stream.sent), 0) self.assertEquals(len(self.comp.stream.sent), 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)
@@ -525,6 +527,7 @@ class JCLComponent_TestCase(JCLTestCase):
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_info = self.comp.disco_get_info("node_test", info_query) disco_info = self.comp.disco_get_info("node_test", info_query)
self.assertEquals(disco_info.get_node(), "node_test")
self.assertEquals(len(self.comp.stream.sent), 0) self.assertEquals(len(self.comp.stream.sent), 0)
self.assertTrue(disco_info.has_feature("jabber:iq:register")) self.assertTrue(disco_info.has_feature("jabber:iq:register"))
@@ -537,6 +540,7 @@ class JCLComponent_TestCase(JCLTestCase):
to_jid="node_test@jcl.test.com/node_type") to_jid="node_test@jcl.test.com/node_type")
disco_info = 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(disco_info.get_node(), "node_type/node_test")
self.assertEquals(len(self.comp.stream.sent), 0) self.assertEquals(len(self.comp.stream.sent), 0)
self.assertTrue(disco_info.has_feature("jabber:iq:register")) self.assertTrue(disco_info.has_feature("jabber:iq:register"))
@@ -553,9 +557,13 @@ class JCLComponent_TestCase(JCLTestCase):
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_info = self.comp.disco_get_info("http://jabber.org/protocol/admin#get-disabled-users-num", disco_info = self.comp.disco_get_info(\
info_query) "http://jabber.org/protocol/admin#get-disabled-users-num",
info_query)
self.assertEquals(len(self.comp.stream.sent), 0) self.assertEquals(len(self.comp.stream.sent), 0)
self.assertEquals(\
disco_info.get_node(),
"http://jabber.org/protocol/admin#get-disabled-users-num")
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(),
@@ -570,17 +578,16 @@ class JCLComponent_TestCase(JCLTestCase):
########################################################################### ###########################################################################
def test_disco_get_items_1type_no_node(self): def test_disco_get_items_1type_no_node(self):
"""get_items on main entity. Must list accounts""" """get_items on main entity. Must list accounts"""
model.db_connect()
self.comp.stream = MockStream() self.comp.stream = MockStream()
self.comp.stream_class = MockStream self.comp.stream_class = MockStream
account1 = Account(user=User(jid="user1@test.com"), account1 = Account(user=User(jid="user1@test.com"),
name="account1", name="account1",
jid="account1@jcl.test.com") jid="account1@jcl.test.com")
model.db_disconnect()
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_items = self.comp.disco_get_items(None, info_query) disco_items = self.comp.disco_get_items(None, info_query)
self.assertEquals(disco_items.get_node(), None)
self.assertEquals(len(disco_items.get_items()), 1) self.assertEquals(len(disco_items.get_items()), 1)
disco_item = disco_items.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)
@@ -589,11 +596,9 @@ class JCLComponent_TestCase(JCLTestCase):
def test_disco_get_items_unknown_node(self): def test_disco_get_items_unknown_node(self):
self.comp.account_manager.account_classes = (ExampleAccount, ) self.comp.account_manager.account_classes = (ExampleAccount, )
model.db_connect()
account11 = ExampleAccount(user=User(jid="user1@test.com"), account11 = ExampleAccount(user=User(jid="user1@test.com"),
name="account11", name="account11",
jid="account11@jcl.test.com") jid="account11@jcl.test.com")
model.db_disconnect()
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")
@@ -602,7 +607,6 @@ class JCLComponent_TestCase(JCLTestCase):
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)
model.db_connect()
user1 = User(jid="user1@test.com") user1 = User(jid="user1@test.com")
account11 = ExampleAccount(user=user1, account11 = ExampleAccount(user=user1,
name="account11", name="account11",
@@ -610,7 +614,6 @@ class JCLComponent_TestCase(JCLTestCase):
account21 = Example2Account(user=user1, account21 = Example2Account(user=user1,
name="account21", name="account21",
jid="account21@jcl.test.com") jid="account21@jcl.test.com")
model.db_disconnect()
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")
@@ -620,11 +623,9 @@ class JCLComponent_TestCase(JCLTestCase):
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"""
model.db_connect()
account1 = Account(user=User(jid="user1@test.com"), account1 = Account(user=User(jid="user1@test.com"),
name="account1", name="account1",
jid="account1@jcl.test.com") jid="account1@jcl.test.com")
model.db_disconnect()
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="account1@jcl.test.com") to_jid="account1@jcl.test.com")
@@ -637,7 +638,6 @@ class JCLComponent_TestCase(JCLTestCase):
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
self.comp.stream = MockStream() self.comp.stream = MockStream()
self.comp.stream_class = MockStream self.comp.stream_class = MockStream
model.db_connect()
user1 = User(jid="user1@test.com") user1 = User(jid="user1@test.com")
account11 = ExampleAccount(user=user1, account11 = ExampleAccount(user=user1,
name="account11", name="account11",
@@ -645,11 +645,11 @@ class JCLComponent_TestCase(JCLTestCase):
account21 = Example2Account(user=user1, account21 = Example2Account(user=user1,
name="account21", name="account21",
jid="account21@jcl.test.com") jid="account21@jcl.test.com")
model.db_disconnect()
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_items = self.comp.disco_get_items(None, info_query) disco_items = self.comp.disco_get_items(None, info_query)
self.assertEquals(disco_items.get_node(), None)
self.assertEquals(len(disco_items.get_items()), 2) self.assertEquals(len(disco_items.get_items()), 2)
disco_item = disco_items.get_items()[0] disco_item = disco_items.get_items()[0]
self.assertEquals(unicode(disco_item.get_jid()), self.assertEquals(unicode(disco_item.get_jid()),
@@ -672,7 +672,6 @@ class JCLComponent_TestCase(JCLTestCase):
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
self.comp.stream = MockStream() self.comp.stream = MockStream()
self.comp.stream_class = MockStream self.comp.stream_class = MockStream
model.db_connect()
user1 = User(jid="user1@test.com") user1 = User(jid="user1@test.com")
user2 = User(jid="user2@test.com") user2 = User(jid="user2@test.com")
account11 = ExampleAccount(user=user1, account11 = ExampleAccount(user=user1,
@@ -687,11 +686,11 @@ class JCLComponent_TestCase(JCLTestCase):
account22 = Example2Account(user=user2, account22 = Example2Account(user=user2,
name="account22", name="account22",
jid="account22@jcl.test.com") jid="account22@jcl.test.com")
model.db_disconnect()
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/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(disco_items.get_node(), "Example")
self.assertEquals(len(disco_items.get_items()), 1) self.assertEquals(len(disco_items.get_items()), 1)
disco_item = disco_items.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")
@@ -704,7 +703,6 @@ class JCLComponent_TestCase(JCLTestCase):
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
self.comp.stream = MockStream() self.comp.stream = MockStream()
self.comp.stream_class = MockStream self.comp.stream_class = MockStream
model.db_connect()
user1 = User(jid="user1@test.com") user1 = User(jid="user1@test.com")
user2 = User(jid="user2@test.com") user2 = User(jid="user2@test.com")
account11 = ExampleAccount(user=user1, account11 = ExampleAccount(user=user1,
@@ -719,12 +717,12 @@ class JCLComponent_TestCase(JCLTestCase):
account22 = Example2Account(user=user2, account22 = Example2Account(user=user2,
name="account22", name="account22",
jid="account22@jcl.test.com") jid="account22@jcl.test.com")
model.db_disconnect()
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
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.get_items()), 1) self.assertEquals(len(disco_items.get_items()), 1)
self.assertEquals(disco_items.get_node(), "Example2")
disco_item = disco_items.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)
@@ -733,11 +731,9 @@ class JCLComponent_TestCase(JCLTestCase):
def test_disco_get_items_2types_with_long_node(self): def test_disco_get_items_2types_with_long_node(self):
"""get_items on a first type account. Must return nothing""" """get_items on a first type account. Must return nothing"""
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
model.db_connect()
account1 = ExampleAccount(user=User(jid="user1@test.com"), account1 = ExampleAccount(user=User(jid="user1@test.com"),
name="account1", name="account1",
jid="account1@jcl.test.com") jid="account1@jcl.test.com")
model.db_disconnect()
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="user1@test.com", from_jid="user1@test.com",
to_jid="account1@jcl.test.com/Example") to_jid="account1@jcl.test.com/Example")
@@ -747,15 +743,14 @@ class JCLComponent_TestCase(JCLTestCase):
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"""
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
model.db_connect()
account1 = Example2Account(user=User(jid="user1@test.com"), account1 = Example2Account(user=User(jid="user1@test.com"),
name="account1", name="account1",
jid="account1@jcl.test.com") jid="account1@jcl.test.com")
model.db_disconnect()
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
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, None) self.assertEquals(disco_items, None)
def test_disco_root_get_items_list_commands(self): def test_disco_root_get_items_list_commands(self):
@@ -773,8 +768,11 @@ class JCLComponent_TestCase(JCLTestCase):
info_query = Iq(stanza_type="get", info_query = Iq(stanza_type="get",
from_jid="admin@test.com", from_jid="admin@test.com",
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(\
info_query) "http://jabber.org/protocol/commands",
info_query)
self.assertEquals(disco_items.get_node(),
"http://jabber.org/protocol/commands")
self.assertEquals(len(disco_items.get_items()), 22) self.assertEquals(len(disco_items.get_items()), 22)
########################################################################### ###########################################################################