From e1c2cd070dbbb2c3a27a16dbd6d122afefa31c1a Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Tue, 4 Mar 2008 21:41:16 +0100 Subject: [PATCH] Add node attribut to disco query responses darcs-hash:20080304204116-86b55-6a6d4b30058b5d4cd64a5c8b050f61987fd7aba9.gz --- src/jcl/jabber/command.py | 4 +-- src/jcl/jabber/disco.py | 10 +++---- src/jcl/jabber/tests/command.py | 14 ++++++---- src/jcl/jabber/tests/component.py | 44 +++++++++++++++---------------- 4 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/jcl/jabber/command.py b/src/jcl/jabber/command.py index f9813db..36334d2 100644 --- a/src/jcl/jabber/command.py +++ b/src/jcl/jabber/command.py @@ -1263,7 +1263,7 @@ class CommandDiscoGetInfoHandler(DiscoHandler): Return infos for given command """ if not disco_obj: - disco_obj = DiscoInfo() + disco_obj = DiscoInfo(node) return [command_manager.get_command_info(disco_info=disco_obj, command_name=node, lang_class=lang_class)] @@ -1281,7 +1281,7 @@ class CommandDiscoGetItemsHandler(DiscoHandler): """ """ if not disco_obj: - disco_obj = DiscoItems() + disco_obj = DiscoItems(node) return [command_manager.list_commands(jid=info_query.get_from(), to_jid=info_query.get_to(), disco_items=disco_obj, diff --git a/src/jcl/jabber/disco.py b/src/jcl/jabber/disco.py index 9ef54f8..02edc35 100644 --- a/src/jcl/jabber/disco.py +++ b/src/jcl/jabber/disco.py @@ -52,7 +52,7 @@ class RootDiscoGetInfoHandler(DiscoHandler): def handle(self, stanza, lang_class, node, disco_obj, data): """Implement discovery get_info on main component JID""" 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("http://jabber.org/protocol/disco#info") 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): """Implement discovery get_info on an account node""" self.__logger.debug("account_disco_get_info") - disco_info = DiscoInfo() + disco_info = DiscoInfo(node) disco_info.add_feature("jabber:iq:register") return [disco_info] @@ -101,7 +101,7 @@ class RootDiscoGetItemsHandler(DiscoHandler): return None disco_items = None 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 \ self.component.account_manager.list_account_types(lang_class): DiscoItem(disco_items, @@ -111,7 +111,7 @@ class RootDiscoGetItemsHandler(DiscoHandler): type_label) else: - disco_items = DiscoItems() + disco_items = DiscoItems(node) for (_account, resource, account_type) in \ self.component.account_manager.list_accounts(unicode(from_jid.bare())): DiscoItem(disco_items, @@ -135,7 +135,7 @@ class AccountTypeDiscoGetItemsHandler(DiscoHandler): self.__logger.debug("Listing account for " + account_type) account_class = self.component.account_manager.get_account_class(account_type) if account_class is not None: - disco_items = DiscoItems() + disco_items = DiscoItems(node) for (_account, resource, account_type) in \ self.component.account_manager.list_accounts(unicode(from_jid.bare()), account_class, diff --git a/src/jcl/jabber/tests/command.py b/src/jcl/jabber/tests/command.py index e3f1511..512833d 100644 --- a/src/jcl/jabber/tests/command.py +++ b/src/jcl/jabber/tests/command.py @@ -94,6 +94,7 @@ class CommandManager_TestCase(unittest.TestCase): to_jid=JID("jcl.test.com"), disco_items=DiscoItems(), lang_class=Lang.en) + self.assertEquals(disco_items.get_node(), None) items = disco_items.get_items() self.assertEquals(len(items), 1) self.assertEquals(items[0].get_node(), "command2") @@ -117,8 +118,9 @@ class CommandManager_TestCase(unittest.TestCase): disco_items = command.command_manager.list_commands(\ jid=JID("user@test.com"), to_jid=JID("jcl.test.com/Example"), - disco_items=DiscoItems(), + disco_items=DiscoItems("Example"), lang_class=Lang.en) + self.assertEquals(disco_items.get_node(), "Example") items = disco_items.get_items() self.assertEquals(len(items), 1) self.assertEquals(items[0].get_node(), "command12") @@ -142,8 +144,9 @@ class CommandManager_TestCase(unittest.TestCase): disco_items = command.command_manager.list_commands(\ jid=JID("user@test.com"), to_jid=JID("account@jcl.test.com/Example"), - disco_items=DiscoItems(), + disco_items=DiscoItems("Example/account1"), lang_class=Lang.en) + self.assertEquals(disco_items.get_node(), "Example/account1") items = disco_items.get_items() self.assertEquals(len(items), 1) self.assertEquals(items[0].get_node(), "command22") @@ -161,6 +164,7 @@ class CommandManager_TestCase(unittest.TestCase): to_jid=JID("jcl.test.com"), disco_items=DiscoItems(), lang_class=Lang.en) + self.assertEquals(disco_items.get_node(), None) items = disco_items.get_items() self.assertEquals(len(items), 2) self.assertEquals(items[0].get_node(), "command1") @@ -181,6 +185,7 @@ class CommandManager_TestCase(unittest.TestCase): to_jid=JID("jcl.test.com"), disco_items=DiscoItems(), lang_class=Lang.en) + self.assertEquals(disco_items.get_node(), None) items = disco_items.get_items() self.assertEquals(len(items), 2) self.assertEquals(items[0].get_node(), "command1") @@ -325,9 +330,8 @@ class CommandManager_TestCase(unittest.TestCase): "command") command_node.setProp("node", "command1") - result = command.command_manager.execute_multi_step_command(info_query, - "command1", - None) + result = command.command_manager.execute_multi_step_command(\ + info_query, "command1", None) self.assertEquals(result[0].get_type(), "error") child = result[0].xmlnode.children self.assertEquals(child.name, "command") diff --git a/src/jcl/jabber/tests/component.py b/src/jcl/jabber/tests/component.py index bb0f2d9..bf4e2ba 100644 --- a/src/jcl/jabber/tests/component.py +++ b/src/jcl/jabber/tests/component.py @@ -499,6 +499,7 @@ class JCLComponent_TestCase(JCLTestCase): from_jid="user1@test.com", to_jid="jcl.test.com") 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(disco_info.get_identities()[0].get_name(), self.comp.name) self.assertTrue(disco_info.has_feature("jabber:iq:version")) @@ -512,6 +513,7 @@ class JCLComponent_TestCase(JCLTestCase): from_jid="user1@test.com", to_jid="jcl.test.com") 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(disco_info.get_identities()[0].get_name(), self.comp.name) @@ -525,6 +527,7 @@ class JCLComponent_TestCase(JCLTestCase): from_jid="user1@test.com", to_jid="node_test@jcl.test.com") 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.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") disco_info = self.comp.disco_get_info("node_type/node_test", info_query) + self.assertEquals(disco_info.get_node(), "node_type/node_test") self.assertEquals(len(self.comp.stream.sent), 0) self.assertTrue(disco_info.has_feature("jabber:iq:register")) @@ -553,9 +557,13 @@ class JCLComponent_TestCase(JCLTestCase): info_query = Iq(stanza_type="get", from_jid="user1@test.com", to_jid="jcl.test.com") - disco_info = self.comp.disco_get_info("http://jabber.org/protocol/admin#get-disabled-users-num", - info_query) + disco_info = self.comp.disco_get_info(\ + "http://jabber.org/protocol/admin#get-disabled-users-num", + info_query) 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.assertEquals(len(disco_info.get_identities()), 1) 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): """get_items on main entity. Must list accounts""" - model.db_connect() self.comp.stream = MockStream() self.comp.stream_class = MockStream account1 = Account(user=User(jid="user1@test.com"), name="account1", jid="account1@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@test.com", to_jid="jcl.test.com") 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) disco_item = disco_items.get_items()[0] self.assertEquals(disco_item.get_jid(), account1.jid) @@ -589,11 +596,9 @@ class JCLComponent_TestCase(JCLTestCase): def test_disco_get_items_unknown_node(self): self.comp.account_manager.account_classes = (ExampleAccount, ) - model.db_connect() account11 = ExampleAccount(user=User(jid="user1@test.com"), name="account11", jid="account11@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@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): self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) - model.db_connect() user1 = User(jid="user1@test.com") account11 = ExampleAccount(user=user1, name="account11", @@ -610,7 +614,6 @@ class JCLComponent_TestCase(JCLTestCase): account21 = Example2Account(user=user1, name="account21", jid="account21@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@test.com", to_jid="jcl.test.com") @@ -620,11 +623,9 @@ class JCLComponent_TestCase(JCLTestCase): def test_disco_get_items_1type_with_node(self): """get_items on an account. Must return nothing""" - model.db_connect() account1 = Account(user=User(jid="user1@test.com"), name="account1", jid="account1@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@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.stream = MockStream() self.comp.stream_class = MockStream - model.db_connect() user1 = User(jid="user1@test.com") account11 = ExampleAccount(user=user1, name="account11", @@ -645,11 +645,11 @@ class JCLComponent_TestCase(JCLTestCase): account21 = Example2Account(user=user1, name="account21", jid="account21@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@test.com", to_jid="jcl.test.com") 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) disco_item = disco_items.get_items()[0] 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.stream = MockStream() self.comp.stream_class = MockStream - model.db_connect() user1 = User(jid="user1@test.com") user2 = User(jid="user2@test.com") account11 = ExampleAccount(user=user1, @@ -687,11 +686,11 @@ class JCLComponent_TestCase(JCLTestCase): account22 = Example2Account(user=user2, name="account22", jid="account22@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@test.com", to_jid="jcl.test.com/Example") 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) disco_item = disco_items.get_items()[0] 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.stream = MockStream() self.comp.stream_class = MockStream - model.db_connect() user1 = User(jid="user1@test.com") user2 = User(jid="user2@test.com") account11 = ExampleAccount(user=user1, @@ -719,12 +717,12 @@ class JCLComponent_TestCase(JCLTestCase): account22 = Example2Account(user=user2, name="account22", jid="account22@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", 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.get_items()), 1) + self.assertEquals(disco_items.get_node(), "Example2") 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) @@ -733,11 +731,9 @@ class JCLComponent_TestCase(JCLTestCase): def test_disco_get_items_2types_with_long_node(self): """get_items on a first type account. Must return nothing""" self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) - model.db_connect() account1 = ExampleAccount(user=User(jid="user1@test.com"), name="account1", jid="account1@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@test.com", 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): """get_items on a second type account. Must return nothing""" self.comp.account_manager.account_classes = (ExampleAccount, Example2Account) - model.db_connect() account1 = Example2Account(user=User(jid="user1@test.com"), name="account1", jid="account1@jcl.test.com") - model.db_disconnect() info_query = Iq(stanza_type="get", from_jid="user1@test.com", 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) def test_disco_root_get_items_list_commands(self): @@ -773,8 +768,11 @@ class JCLComponent_TestCase(JCLTestCase): info_query = Iq(stanza_type="get", from_jid="admin@test.com", to_jid="jcl.test.com") - disco_items = self.comp.disco_get_items("http://jabber.org/protocol/commands", - info_query) + disco_items = self.comp.disco_get_items(\ + "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) ###########################################################################