Add some tests

darcs-hash:20071212180833-86b55-6f2c7f020b88b577501cfd9d5c4f121142789d1b.gz
This commit is contained in:
David Rousselie
2007-12-12 19:08:33 +01:00
parent 9fc62780bc
commit 656b2b7476
4 changed files with 252 additions and 75 deletions

View File

@@ -41,6 +41,13 @@ def suite():
return jcl.tests.suite()
if __name__ == '__main__':
class MyTestProgram(unittest.TestProgram):
def runTests(self):
"""run tests but do not exit after"""
if self.testRunner is None:
self.testRunner = unittest.TextTestRunner(verbosity=self.verbosity)
self.testRunner.run(self.test)
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.CRITICAL)
@@ -50,27 +57,19 @@ if __name__ == '__main__':
testoob.main(defaultTest='suite')
except ImportError:
print "Falling back to standard unittest"
unittest.main(defaultTest='suite')
MyTestProgram(defaultTest='suite')
coverage.stop()
coverage.analysis(jcl.jabber)
coverage.analysis(jcl.jabber.component)
coverage.analysis(jcl.jabber.feeder)
coverage.analysis(jcl.jabber.message)
coverage.analysis(jcl.jabber.presence)
coverage.analysis(jcl.jabber.disco)
coverage.analysis(jcl.lang)
coverage.analysis(jcl.runner)
coverage.analysis(jcl.model)
coverage.analysis(jcl.model.account)
coverage.report([jcl.jabber,
jcl.jabber.component,
jcl.jabber.feeder,
jcl.jabber.message,
jcl.jabber.presence,
jcl.jabber.disco,
jcl.lang,
jcl.runner,
jcl.model,
jcl.model.account])
coverage.report(["src/jcl/__init__.py",
"src/jcl/lang.py",
"src/jcl/runner.py",
"src/jcl/error.py",
"src/jcl/jabber/__init__.py",
"src/jcl/jabber/component.py",
"src/jcl/jabber/command.py",
"src/jcl/jabber/feeder.py",
"src/jcl/jabber/message.py",
"src/jcl/jabber/presence.py",
"src/jcl/jabber/disco.py",
"src/jcl/jabber/register.py",
"src/jcl/model/__init__.py",
"src/jcl/model/account.py"])

View File

@@ -282,8 +282,6 @@ class JCLCommandManager(CommandManager):
(True, root_node_re)
self.commands["http://jabber.org/protocol/admin#end-user-session"] = \
(True, root_node_re)
#self.commands["http://jabber.org/protocol/admin#get-user-password"] = True
#self.commands["http://jabber.org/protocol/admin#change-user-password"] = True
self.commands["http://jabber.org/protocol/admin#get-user-roster"] = \
(True, root_node_re)
self.commands["http://jabber.org/protocol/admin#get-user-lastlogin"] = \
@@ -320,6 +318,9 @@ class JCLCommandManager(CommandManager):
(True, root_node_re)
self.commands["jcl#get-last-error"] = (False, account_node_re)
#self.commands["http://jabber.org/protocol/admin#get-user-password"] = True
#self.commands["http://jabber.org/protocol/admin#change-user-password"] = True
def get_name_and_jid(self, mixed_name_and_jid):
return mixed_name_and_jid.split("/", 1)[:2]
@@ -363,7 +364,7 @@ class JCLCommandManager(CommandManager):
label = _account.name + " (" + account_type \
+ ") (" + user_jid + ")"
else:
label = _account.name+ " (" + account_type \
label = _account.name + " (" + account_type \
+ ")"
field.add_option(label=label,
values=[_account.name + "/" + user_jid])

View File

@@ -3,10 +3,34 @@ __revision__ = ""
import unittest
import jcl.jabber as jabber
from jcl.jabber.tests import component, feeder, command, message, presence
class HandlerType1:
pass
class HandlerType2:
pass
class HandlerType3:
pass
class JabberModule_TestCase(unittest.TestCase):
def test_replace_handlers(self):
handlers = [[HandlerType1(), HandlerType2(), HandlerType1()],
[HandlerType2(), HandlerType1(), HandlerType2()]]
jabber.replace_handlers(handlers, HandlerType2, HandlerType3())
self.assertEquals(handlers[0][0].__class__.__name__, "HandlerType1")
self.assertEquals(handlers[0][1].__class__.__name__, "HandlerType3")
self.assertEquals(handlers[0][2].__class__.__name__, "HandlerType1")
self.assertEquals(handlers[1][0].__class__.__name__, "HandlerType3")
self.assertEquals(handlers[1][1].__class__.__name__, "HandlerType1")
self.assertEquals(handlers[1][2].__class__.__name__, "HandlerType3")
def suite():
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(JabberModule_TestCase, 'test'))
test_suite.addTest(component.suite())
test_suite.addTest(feeder.suite())
test_suite.addTest(command.suite())

View File

@@ -55,6 +55,7 @@ class FieldNoType_TestCase(unittest.TestCase):
class MockComponent(JCLComponent):
jid = JID("jcl.test.com")
lang = Lang()
def __init__(self):
pass
@@ -75,64 +76,88 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(command_name, "test_command")
def test_list_root_commands(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command2"] = (False, command.root_node_re)
command.command_manager.commands["command11"] = (True, command.account_type_node_re)
command.command_manager.commands["command12"] = (False, command.account_type_node_re)
command.command_manager.commands["command21"] = (True, command.account_node_re)
command.command_manager.commands["command22"] = (False, command.account_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.commands["command2"] = (False,
command.root_node_re)
command.command_manager.commands["command11"] = (\
True, command.account_type_node_re)
command.command_manager.commands["command12"] = (\
False, command.account_type_node_re)
command.command_manager.commands["command21"] = (\
True, command.account_node_re)
command.command_manager.commands["command22"] = (\
False, command.account_node_re)
command.command_manager.component = MockComponent()
disco_items = command.command_manager.list_commands(jid=JID("user@test.com"),
to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(),
lang_class=Lang.en)
disco_items = command.command_manager.list_commands(\
jid=JID("user@test.com"),
to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(),
lang_class=Lang.en)
items = disco_items.get_items()
self.assertEquals(len(items), 1)
self.assertEquals(items[0].get_node(), "command2")
self.assertEquals(items[0].get_name(), "command2")
def test_list_accounttype_commands(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command2"] = (False, command.root_node_re)
command.command_manager.commands["command11"] = (True, command.account_type_node_re)
command.command_manager.commands["command12"] = (False, command.account_type_node_re)
command.command_manager.commands["command21"] = (True, command.account_node_re)
command.command_manager.commands["command22"] = (False, command.account_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.commands["command2"] = (False,
command.root_node_re)
command.command_manager.commands["command11"] = (\
True, command.account_type_node_re)
command.command_manager.commands["command12"] = (\
False, command.account_type_node_re)
command.command_manager.commands["command21"] = (\
True, command.account_node_re)
command.command_manager.commands["command22"] = (\
False, command.account_node_re)
command.command_manager.component = MockComponent()
disco_items = command.command_manager.list_commands(jid=JID("user@test.com"),
to_jid=JID("jcl.test.com/Example"),
disco_items=DiscoItems(),
lang_class=Lang.en)
disco_items = command.command_manager.list_commands(\
jid=JID("user@test.com"),
to_jid=JID("jcl.test.com/Example"),
disco_items=DiscoItems(),
lang_class=Lang.en)
items = disco_items.get_items()
self.assertEquals(len(items), 1)
self.assertEquals(items[0].get_node(), "command12")
self.assertEquals(items[0].get_name(), "command12")
def test_list_account_commands(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command2"] = (False, command.root_node_re)
command.command_manager.commands["command11"] = (True, command.account_type_node_re)
command.command_manager.commands["command12"] = (False, command.account_type_node_re)
command.command_manager.commands["command21"] = (True, command.account_node_re)
command.command_manager.commands["command22"] = (False, command.account_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.commands["command2"] = (False,
command.root_node_re)
command.command_manager.commands["command11"] = (\
True, command.account_type_node_re)
command.command_manager.commands["command12"] = (\
False, command.account_type_node_re)
command.command_manager.commands["command21"] = (\
True, command.account_node_re)
command.command_manager.commands["command22"] = (\
False, command.account_node_re)
command.command_manager.component = MockComponent()
disco_items = command.command_manager.list_commands(jid=JID("user@test.com"),
to_jid=JID("account@jcl.test.com/Example"),
disco_items=DiscoItems(),
lang_class=Lang.en)
disco_items = command.command_manager.list_commands(\
jid=JID("user@test.com"),
to_jid=JID("account@jcl.test.com/Example"),
disco_items=DiscoItems(),
lang_class=Lang.en)
items = disco_items.get_items()
self.assertEquals(len(items), 1)
self.assertEquals(items[0].get_node(), "command22")
self.assertEquals(items[0].get_name(), "command22")
def test_list_commands_as_admin(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command2"] = (False, command.root_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.commands["command2"] = (False,
command.root_node_re)
command.command_manager.component = MockComponent()
disco_items = command.command_manager.list_commands(jid=JID("admin@test.com"),
to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(),
lang_class=Lang.en)
disco_items = command.command_manager.list_commands(\
jid=JID("admin@test.com"),
to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(),
lang_class=Lang.en)
items = disco_items.get_items()
self.assertEquals(len(items), 2)
self.assertEquals(items[0].get_node(), "command1")
@@ -141,13 +166,16 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(items[1].get_name(), "command2")
def test_list_commands_as_admin_fulljid(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command2"] = (False, command.root_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.commands["command2"] = (False,
command.root_node_re)
command.command_manager.component = MockComponent()
disco_items = command.command_manager.list_commands(jid=JID("admin@test.com/full"),
to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(),
lang_class=Lang.en)
disco_items = command.command_manager.list_commands(\
jid=JID("admin@test.com/full"),
to_jid=JID("jcl.test.com"),
disco_items=DiscoItems(),
lang_class=Lang.en)
items = disco_items.get_items()
self.assertEquals(len(items), 2)
self.assertEquals(items[0].get_node(), "command1")
@@ -156,7 +184,8 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(items[1].get_name(), "command2")
def test_apply_admin_command_action_as_admin(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.apply_execute_command = \
lambda iq, command_name: []
command.command_manager.component = MockComponent()
@@ -169,7 +198,8 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(result, [])
def test_apply_admin_command_action_as_admin_fulljid(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.apply_execute_command = \
lambda iq, command_name: []
command.command_manager.component = MockComponent()
@@ -182,7 +212,8 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(result, [])
def test_apply_admin_command_action_as_user(self):
command.command_manager.commands["command1"] = (True, command.root_node_re)
command.command_manager.commands["command1"] = (True,
command.root_node_re)
command.command_manager.apply_execute_command = \
lambda iq, command_name: []
command.command_manager.component = MockComponent()
@@ -199,7 +230,8 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(result[0].xmlnode.children.children.name, "forbidden")
def test_apply_non_admin_command_action_as_admin(self):
command.command_manager.commands["command1"] = (False, command.root_node_re)
command.command_manager.commands["command1"] = (False,
command.root_node_re)
command.command_manager.apply_execute_command = \
lambda iq, command_name: []
command.command_manager.component = MockComponent()
@@ -212,7 +244,8 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(result, [])
def test_apply_non_admin_command_action_as_user(self):
command.command_manager.commands["command1"] = (False, command.root_node_re)
command.command_manager.commands["command1"] = (False,
command.root_node_re)
command.command_manager.apply_execute_command = \
lambda iq, command_name: []
command.command_manager.component = MockComponent()
@@ -225,7 +258,8 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(result, [])
def test_apply_command_action_to_wrong_jid(self):
command.command_manager.commands["command1"] = (False, command.account_node_re)
command.command_manager.commands["command1"] = (False,
command.account_node_re)
command.command_manager.apply_execute_command = \
lambda iq, command_name: []
command.command_manager.component = MockComponent()
@@ -242,7 +276,8 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(result[0].xmlnode.children.children.name, "forbidden")
def test_apply_command_non_existing_action(self):
command.command_manager.commands["command1"] = (False, command.root_node_re)
command.command_manager.commands["command1"] = (False,
command.root_node_re)
command.command_manager.component = MockComponent()
info_query = Iq(stanza_type="set",
from_jid="user@test.com",
@@ -257,6 +292,45 @@ class CommandManager_TestCase(unittest.TestCase):
self.assertEquals(result[0].xmlnode.children.children.name,
"feature-not-implemented")
def test_apply_command_unknown_command(self):
command.command_manager.component = MockComponent()
info_query = Iq(stanza_type="set",
from_jid="user@test.com",
to_jid="jcl.test.com")
result = command.command_manager.apply_command_action(info_query,
"command1",
"noexecute")
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_type(), "error")
self.assertEquals(result[0].xmlnode.children.name, "error")
self.assertEquals(result[0].xmlnode.children.prop("type"), "cancel")
self.assertEquals(result[0].xmlnode.children.children.name,
"feature-not-implemented")
def test_multi_step_command_unknown_step(self):
command.command_manager.commands["command1"] = (False,
command.root_node_re)
command.command_manager.component = MockComponent()
info_query = Iq(stanza_type="set",
from_jid="user@test.com",
to_jid="jcl.test.com")
command_node = info_query.set_new_content(command.COMMAND_NS,
"command")
command_node.setProp("node",
"command1")
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")
self.assertEquals(child.prop("node"), "command1")
child = result[0].xmlnode.children.next
self.assertEquals(child.name, "error")
self.assertEquals(child.prop("type"), "cancel")
self.assertEquals(child.children.name,
"feature-not-implemented")
class JCLCommandManager_TestCase(JCLTestCase):
def setUp(self, tables=[]):
tables += [Account, PresenceAccount, ExampleAccount,
@@ -281,6 +355,11 @@ class JCLCommandManager_TestCase(JCLTestCase):
if os.path.exists(self.config_file):
os.unlink(self.config_file)
def test_init(self):
command_manager = JCLCommandManager(self.comp,
self.comp.account_manager)
self.assertEquals(len(command_manager.commands), 23)
def _check_actions(self, info_query, expected_actions=None, action_index=0):
actions = info_query.xpath_eval("c:command/c:actions",
{"c": "http://jabber.org/protocol/commands"})
@@ -413,6 +492,80 @@ class JCLCommandManager_TestCase(JCLTestCase):
self.assertEquals(options[3].children.content,
"account12/test1@test.com")
def test_add_form_select_accounts_without_user_jid(self):
self.comp.account_manager.account_classes = (ExampleAccount,
Example2Account)
model.db_connect()
user1 = User(jid="test1@test.com")
account11 = ExampleAccount(user=user1,
name="account11",
jid="account11@jcl.test.com")
account12 = Example2Account(user=user1,
name="account12",
jid="account12@jcl.test.com")
user2 = User(jid="test2@test.com")
account21 = ExampleAccount(user=user2,
name="account21",
jid="account21@jcl.test.com")
account22 = ExampleAccount(user=user2,
name="account11",
jid="account11@jcl.test.com")
user3 = User(jid="test3@test.com")
account31 = ExampleAccount(user=user3,
name="account31",
jid="account31@jcl.test.com")
account32 = Example2Account(user=user3,
name="account32",
jid="account32@jcl.test.com")
model.db_disconnect()
info_query = Iq(stanza_type="set",
from_jid="admin@test.com",
to_jid=self.comp.jid)
command_node = info_query.set_new_content(command.COMMAND_NS, "command")
session_context = {}
session_context["user_jids"] = ["test1@test.com", "test2@test.com"]
self.command_manager.add_form_select_accounts(session_context,
command_node,
Lang.en,
"title", "description",
show_user_jid=False)
x_data = info_query.xpath_eval("c:command/data:x",
{"c": "http://jabber.org/protocol/commands",
"data": "jabber:x:data"})
self.assertEquals(len(x_data), 1)
self.assertEquals(x_data[0].prop("type"), "form")
fields = info_query.xpath_eval("c:command/data:x/data:field",
{"c": "http://jabber.org/protocol/commands",
"data": "jabber:x:data"})
self.assertEquals(len(fields), 1)
self.assertEquals(fields[0].prop("var"), "account_names")
self.assertEquals(fields[0].prop("type"), "list-multi")
self.assertEquals(fields[0].prop("label"), Lang.en.field_accounts)
options = info_query.xpath_eval("c:command/data:x/data:field[1]/data:option",
{"c": "http://jabber.org/protocol/commands",
"data": "jabber:x:data"})
self.assertEquals(len(options), 4)
self.assertEquals(options[0].prop("label"),
"account11 (Example)")
self.assertEquals(options[0].children.name, "value")
self.assertEquals(options[0].children.content,
"account11/test1@test.com")
self.assertEquals(options[1].prop("label"),
"account21 (Example)")
self.assertEquals(options[1].children.name, "value")
self.assertEquals(options[1].children.content,
"account21/test2@test.com")
self.assertEquals(options[2].prop("label"),
"account11 (Example)")
self.assertEquals(options[2].children.name, "value")
self.assertEquals(options[2].children.content,
"account11/test2@test.com")
self.assertEquals(options[3].prop("label"),
"account12 (Example2)")
self.assertEquals(options[3].children.name, "value")
self.assertEquals(options[3].children.content,
"account12/test1@test.com")
def test_add_form_select_accounts_filtered(self):
self.comp.account_manager.account_classes = (ExampleAccount,
Example2Account)