Expose feature "commands"
darcs-hash:20070626060756-86b55-245bae8c7527b595e9786995582adff31072828e.gz
This commit is contained in:
@@ -331,10 +331,6 @@ class JCLComponent(Component, object):
|
||||
self.stream.send(info_query)
|
||||
return 1
|
||||
|
||||
def disco_get_commands_list():
|
||||
"""Return Ad-Hoc commands list"""
|
||||
return None
|
||||
|
||||
def disco_get_info(self, node, info_query):
|
||||
"""Discovery get info handler
|
||||
"""
|
||||
@@ -370,7 +366,8 @@ class JCLComponent(Component, object):
|
||||
self.account_manager.account_type_disco_get_items(from_jid,
|
||||
account_type),
|
||||
lambda name, from_jid, account_type, lang_class: \
|
||||
self.account_manager.root_disco_get_items(from_jid,
|
||||
self.account_manager.root_disco_get_items(node,
|
||||
from_jid,
|
||||
lang_class))
|
||||
if result is None:
|
||||
lang_class = self.lang.get_lang_class_from_node(info_query.get_node())
|
||||
@@ -644,6 +641,7 @@ class AccountManager(object):
|
||||
if not node:
|
||||
disco_info = DiscoInfo()
|
||||
disco_info.add_feature("jabber:iq:version")
|
||||
disco_info.add_feature("http://jabber.org/protocol/commands")
|
||||
if not self.has_multiple_account_type:
|
||||
disco_info.add_feature("jabber:iq:register")
|
||||
DiscoIdentity(disco_info, name,
|
||||
@@ -667,27 +665,24 @@ class AccountManager(object):
|
||||
+ " class not in account_classes")
|
||||
return None
|
||||
|
||||
def root_disco_get_items(self, from_jid, lang_class):
|
||||
def root_disco_get_items(self, node, from_jid, lang_class):
|
||||
"""Discovery get_items on root node"""
|
||||
if node is not None:
|
||||
return None
|
||||
disco_items = None
|
||||
if self.has_multiple_account_type: # list accounts with only one type declared
|
||||
def _list_account_types(disco_items, account_class, bare_from_jid, account_type):
|
||||
disco_items = DiscoItems()
|
||||
for account_type in self.account_types:
|
||||
type_label_attr = "type_" + account_type.lower() + "_name"
|
||||
if hasattr(lang_class, type_label_attr):
|
||||
type_label = getattr(lang_class, type_label_attr)
|
||||
else:
|
||||
type_label = account_type
|
||||
return DiscoItem(disco_items,
|
||||
DiscoItem(disco_items,
|
||||
JID(unicode(self.component.jid) + "/" +
|
||||
account_type),
|
||||
account_type,
|
||||
type_label)
|
||||
disco_items = DiscoItems()
|
||||
for account_type in self.account_types:
|
||||
_list_account_types(disco_items,
|
||||
self._get_account_class(account_type
|
||||
+ "Account"),
|
||||
from_jid.bare(), account_type)
|
||||
else:
|
||||
disco_items = self._list_accounts(self.account_classes[0],
|
||||
from_jid.bare())
|
||||
|
||||
@@ -568,7 +568,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
info_query = Iq(stanza_type = "get", \
|
||||
from_jid = "user1@test.com", \
|
||||
to_jid = "jcl.test.com")
|
||||
disco_items = self.comp.disco_get_items("unknown", info_query)
|
||||
disco_items = self.comp.disco_get_items(None, info_query)
|
||||
self.assertEquals(len(disco_items.get_items()), 1)
|
||||
disco_item = disco_items.get_items()[0]
|
||||
self.assertEquals(disco_item.get_jid(), account1.jid)
|
||||
@@ -576,10 +576,33 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
self.assertEquals(disco_item.get_name(), account1.long_name)
|
||||
|
||||
def test_disco_get_items_unknown_node(self):
|
||||
self.comp.account_manager.account_classes = (ExampleAccount, )
|
||||
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
||||
account11 = ExampleAccount(user_jid="user1@test.com",
|
||||
name="account11",
|
||||
jid="account11@jcl.test.com")
|
||||
del account.hub.threadConnection
|
||||
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)
|
||||
disco_items = self.comp.disco_get_items("unknown", info_query)
|
||||
self.assertEquals(disco_items, None)
|
||||
|
||||
def test_disco_get_items_unknown_node_multiple_account_types(self):
|
||||
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
|
||||
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
||||
account11 = ExampleAccount(user_jid="user1@test.com",
|
||||
name="account11",
|
||||
jid="account11@jcl.test.com")
|
||||
account21 = Example2Account(user_jid="user1@test.com",
|
||||
name="account21",
|
||||
jid="account21@jcl.test.com")
|
||||
del account.hub.threadConnection
|
||||
info_query = Iq(stanza_type="get",
|
||||
from_jid="user1@test.com",
|
||||
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, None)
|
||||
|
||||
def test_disco_get_items_1type_with_node(self):
|
||||
@@ -600,24 +623,27 @@ class JCLComponent_TestCase(unittest.TestCase):
|
||||
self.comp.lang = LangExample()
|
||||
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
|
||||
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
||||
account11 = ExampleAccount(user_jid = "user1@test.com", \
|
||||
name = "account11", \
|
||||
account11 = ExampleAccount(user_jid="user1@test.com",
|
||||
name="account11",
|
||||
jid="account11@jcl.test.com")
|
||||
account21 = Example2Account(user_jid = "user1@test.com", \
|
||||
name = "account21", \
|
||||
account21 = Example2Account(user_jid="user1@test.com",
|
||||
name="account21",
|
||||
jid="account21@jcl.test.com")
|
||||
del account.hub.threadConnection
|
||||
info_query = Iq(stanza_type = "get", \
|
||||
from_jid = "user1@test.com", \
|
||||
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(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(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)
|
||||
self.assertEquals(disco_item.get_name(),
|
||||
LangExample.en.type_example_name)
|
||||
disco_item = disco_items.get_items()[1]
|
||||
self.assertEquals(unicode(disco_item.get_jid()), unicode(self.comp.jid) + "/Example2")
|
||||
self.assertEquals(unicode(disco_item.get_jid()),
|
||||
unicode(self.comp.jid) + "/Example2")
|
||||
self.assertEquals(disco_item.get_node(), "Example2")
|
||||
# no name in language class for type Example2, so fallback on type name
|
||||
self.assertEquals(disco_item.get_name(), "Example2")
|
||||
|
||||
@@ -153,7 +153,7 @@ class Lang:
|
||||
get_gateway_desc = u"Entrer l'adresse email de votre contact"
|
||||
get_gateway_prompt = u"Adresse email"
|
||||
|
||||
command_list = u"List les comptes"
|
||||
command_list = u"Liste les comptes"
|
||||
|
||||
class nl:
|
||||
# TODO: when finish, delete this line and uncomment in tests/lang.py the makeSuite(Language_nl_TestCase, 'test') line
|
||||
|
||||
Reference in New Issue
Block a user