account default_func and post_func refactoring

for registration fields, default_func now returns default_value
and post_func include test for mandatory fields.

darcs-hash:20070322161501-86b55-75b6d57fef3ba0df6c6c80a487c9afcdab2d40c3.gz
This commit is contained in:
David Rousselie
2007-03-22 17:15:01 +01:00
parent 6753545187
commit 101e74f6c7
6 changed files with 189 additions and 72 deletions

View File

@@ -894,6 +894,63 @@ class JCLComponent_TestCase(unittest.TestCase):
self.assertEquals(presence_account.get_node().prop("type"), \
"subscribe")
def test_handle_set_register_new_multiple_types(self):
self.comp.stream = MockStream()
self.comp.stream_class = MockStream
self.comp.account_classes = [ExampleAccount, Example2Account]
x_data = Form("submit")
x_data.add_field(name = "name", \
value = "account1", \
field_type = "text-single")
iq_set = Iq(stanza_type = "set", \
from_jid = "user1@test.com", \
to_jid = "jcl.test.com/Example2")
query = iq_set.new_query("jabber:iq:register")
x_data.as_xml(query, None)
self.comp.handle_set_register(iq_set)
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
accounts = self.comp.account_classes[1].select(\
self.comp.account_classes[1].q.user_jid == "user1@test.com" \
and self.comp.account_classes[1].q.name == "account1")
self.assertEquals(accounts.count(), 1)
_account = accounts[0]
self.assertEquals(_account.user_jid, "user1@test.com")
self.assertEquals(_account.name, "account1")
self.assertEquals(_account.jid, "account1@jcl.test.com")
del account.hub.threadConnection
stanza_sent = self.comp.stream.sent
self.assertEquals(len(stanza_sent), 4)
iq_result = stanza_sent[0]
self.assertTrue(isinstance(iq_result, Iq))
self.assertEquals(iq_result.get_node().prop("type"), "result")
self.assertEquals(iq_result.get_from(), "jcl.test.com/Example2")
self.assertEquals(iq_result.get_to(), "user1@test.com")
presence_component = stanza_sent[1]
self.assertTrue(isinstance(presence_component, Presence))
self.assertEquals(presence_component.get_from(), "jcl.test.com")
self.assertEquals(presence_component.get_to(), "user1@test.com")
self.assertEquals(presence_component.get_node().prop("type"), \
"subscribe")
message = stanza_sent[2]
self.assertTrue(isinstance(message, Message))
self.assertEquals(message.get_from(), "jcl.test.com")
self.assertEquals(message.get_to(), "user1@test.com")
self.assertEquals(message.get_subject(), \
_account.get_new_message_subject(Lang.en))
self.assertEquals(message.get_body(), \
_account.get_new_message_body(Lang.en))
presence_account = stanza_sent[3]
self.assertTrue(isinstance(presence_account, Presence))
self.assertEquals(presence_account.get_from(), "account1@jcl.test.com")
self.assertEquals(presence_account.get_to(), "user1@test.com")
self.assertEquals(presence_account.get_node().prop("type"), \
"subscribe")
def test_handle_set_register_new_complex(self):
self.comp.stream = MockStream()
self.comp.stream_class = MockStream

View File

@@ -38,23 +38,26 @@ class ExampleAccount(Account):
test_int = IntCol(default = 42)
def _get_register_fields(cls):
def password_post_func(password):
def password_post_func(password, default_func):
if password is None or password == "":
return None
return password
return Account.get_register_fields() + \
[("login", "text-single", None, account.string_not_null_post_func, \
account.mandatory_field), \
[("login", "text-single", None, \
lambda field_value, default_func: account.mandatory_field("login", \
field_value, \
default_func), \
lambda : ""), \
("password", "text-private", None, password_post_func, \
(lambda field_name: None)), \
lambda : ""), \
("store_password", "boolean", None, account.default_post_func, \
lambda field_name: True), \
lambda : True), \
("test_enum", "list-single", ["choice1", "choice2", "choice3"], \
account.string_not_null_post_func,\
lambda field_name: "choice2"), \
account.default_post_func, \
lambda : "choice2"), \
("test_int", "text-single", None, account.int_post_func, \
lambda field_name: 44)]
lambda : 44)]
get_register_fields = classmethod(_get_register_fields)
@@ -64,7 +67,7 @@ class Example2Account(Account):
def _get_register_fields(cls):
return Account.get_register_fields() + \
[("test_new_int", "text-single", None, account.int_post_func, \
lambda field_name: 43)]
lambda : 43)]
get_register_fields = classmethod(_get_register_fields)
class PresenceAccountExample(PresenceAccount):

View File

@@ -38,31 +38,42 @@ DB_URL = DB_PATH# + "?debug=1&debugThreading=1"
class AccountModule_TestCase(unittest.TestCase):
def test_default_post_func(self):
result = account.default_post_func("test")
result = account.default_post_func("test", None)
self.assertEquals(result, "test")
def test_default_post_func_default_value(self):
result = account.default_post_func("", lambda : "test")
self.assertEquals(result, "test")
def test_default_post_func_default_value2(self):
result = account.default_post_func(None, lambda : "test")
self.assertEquals(result, "test")
def test_int_post_func(self):
result = account.int_post_func("42")
result = account.int_post_func("42", None)
self.assertEquals(result, 42)
def test_string_not_null_post_func_not_null(self):
result = account.string_not_null_post_func("ok")
self.assertEquals(result, "ok")
def test_int_post_func_default_value(self):
result = account.int_post_func("", lambda : 42)
self.assertEquals(result, 42)
def test_string_not_null_post_func_none(self):
self.assertRaises(FieldError, \
account.string_not_null_post_func, \
None)
def test_int_post_func_default_value(self):
result = account.int_post_func(None, lambda : 42)
self.assertEquals(result, 42)
def test_string_not_null_post_func_empty(self):
self.assertRaises(FieldError, \
account.string_not_null_post_func, \
"")
def test_mandatory_field(self):
def test_mandatory_field_empty(self):
self.assertRaises(FieldError, \
account.mandatory_field, \
"")
"field", "", None)
def test_mandatory_field_none(self):
self.assertRaises(FieldError, \
account.mandatory_field, \
"field", None, None)
def test_mandatory_field_empty(self):
self.assertEquals(account.mandatory_field("field", "value", None), \
"value")
class Account_TestCase(unittest.TestCase):
def setUp(self):
@@ -146,9 +157,14 @@ class PresenceAccount_TestCase(unittest.TestCase):
user_jid = "test1@test.com", \
name = "account11", \
jid = "account11@jcl.test.com")
self.assertEquals(account11.possibles_actions, PresenceAccountExample.possibles_actions)
(possibles_actions, chat_default_action) = account11.get_presence_actions_fields()["chat_action"]
self.assertEquals(chat_default_action, PresenceAccountExample.DO_SOMETHING_ELSE)
self.assertEquals(possibles_actions, PresenceAccountExample.possibles_actions)
for (field_name, \
field_type, \
possibles_actions, \
post_func, \
default_func) in account11.get_register_fields()[1:]:
for possible_action in possibles_actions:
self.assertEquals(post_func(possible_action, default_func),
int(possible_action))
self.assertTrue(str(default_func()) in possibles_actions)
del account.hub.threadConnection