From 49fd02310a8ce335e64a74702195dc0ef2857c76 Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Thu, 26 Oct 2006 12:59:44 +0200 Subject: [PATCH] get_register second part darcs-hash:20061026105944-86b55-186c984e426c5a3b396af082736b5b59fa44c07e.gz --- run_tests.py | 10 +++--- src/jcl/jabber/component.py | 17 ++++++---- tests/jcl/jabber/test_component.py | 50 +++++++++++++++++++++--------- 3 files changed, 52 insertions(+), 25 deletions(-) diff --git a/run_tests.py b/run_tests.py index 683e6f9..6371eba 100644 --- a/run_tests.py +++ b/run_tests.py @@ -50,14 +50,14 @@ if __name__ == '__main__': feeder_suite = unittest.makeSuite(Feeder_TestCase, "test") sender_suite = unittest.makeSuite(Sender_TestCase, "test") jcl_suite = unittest.TestSuite() -# jcl_suite.addTest(FeederComponent_TestCase('test_handle_get_register_new')) + jcl_suite.addTest(FeederComponent_TestCase('test_handle_get_register_exist')) # jcl_suite.addTest(FeederComponent_TestCase('test_handle_presence_available_to_account_live_password')) # jcl_suite = unittest.TestSuite((feeder_component_suite)) # jcl_suite = unittest.TestSuite((component_suite)) - jcl_suite = unittest.TestSuite((component_suite, - feeder_component_suite, - feeder_suite, - sender_suite)) +# jcl_suite = unittest.TestSuite((component_suite, +# feeder_component_suite, +# feeder_suite, +# sender_suite)) test_support.run_suite(jcl_suite) diff --git a/src/jcl/jabber/component.py b/src/jcl/jabber/component.py index c1df74e..5167800 100644 --- a/src/jcl/jabber/component.py +++ b/src/jcl/jabber/component.py @@ -302,17 +302,19 @@ class JCLComponent(Component): """Send back register form to user """ self.__logger.debug("GET_REGISTER") -## TODO Lang lang_class = self.__lang.get_lang_class_from_node(info_query.get_node()) base_from_jid = unicode(info_query.get_from().bare()) to_jid = info_query.get_to() + name = to_jid.node info_query = info_query.make_result_response() query = info_query.new_query("jabber:iq:register") if to_jid and to_jid != self.jid: self.db_connect() - self.get_reg_form_init(lang_class, \ - self.account_class.select() # TODO - ).attach_xml(query) + for _account in self.account_class.select(\ + self.account_class.q.user_jid == base_from_jid \ + and self.account_class.q.name == name): + self.get_reg_form_init(lang_class, \ + _account).attach_xml(query) self.db_disconnect() else: self.get_reg_form(lang_class).attach_xml(query) @@ -569,8 +571,11 @@ class JCLComponent(Component): def get_reg_form_init(self, lang_class, account): """Return register form for an existing account (update) """ - # TODO - return X() + reg_form = self.get_reg_form(lang_class) + for (field_name, field) in reg_form.fields.items(): + if hasattr(self.account_class, field_name): + field.value = getattr(self.account_class, field_name) + return reg_form ########################################################################### # Virtual methods diff --git a/tests/jcl/jabber/test_component.py b/tests/jcl/jabber/test_component.py index b992d6c..a798b9f 100644 --- a/tests/jcl/jabber/test_component.py +++ b/tests/jcl/jabber/test_component.py @@ -278,19 +278,6 @@ class JCLComponent_TestCase(unittest.TestCase): disco_items = self.comp.disco_get_items("account1", info_query) self.assertEquals(disco_items.get_items(), []) - def test_get_reg_form(self): -## self.comp.get_reg_form(Lang.en, Account) - # TODO - self.assertTrue(True) - - def test_get_reg_form_init(self): - account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL) - account1 = Account(user_jid = "", name = "", jid = "") - del account.hub.threadConnection -## self.comp.get_reg_form_init(Lang.en, account1) - # TODO - self.assertTrue(True) - def test_handle_get_version(self): self.comp.stream = MockStream() self.comp.stream_class = MockStream @@ -344,7 +331,42 @@ class JCLComponent_TestCase(unittest.TestCase): def test_handle_get_register_exist(self): - pass + self.comp.stream = MockStream() + self.comp.stream_class = MockStream + account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL) + account1 = Account(user_jid = "user1@test.com", \ + name = "account1", \ + jid = "account1@jcl.test.com") + del account.hub.threadConnection + self.comp.handle_get_register(Iq(stanza_type = "get", \ + from_jid = "user1@test.com", \ + to_jid = "account1@jcl.test.com")) + self.assertEquals(len(self.comp.stream.sent), 1) + iq_sent = self.comp.stream.sent[0] + self.assertEquals(iq_sent.get_to(), "user1@test.com") + titles = iq_sent.xpath_eval("jir:query/jxd:x/jxd:title", \ + {"jir" : "jabber:iq:register", \ + "jxd" : "jabber:x:data"}) + self.assertEquals(len(titles), 1) + self.assertEquals(titles[0].content, \ + Lang.en.register_title) + instructions = iq_sent.xpath_eval("jir:query/jxd:x/jxd:instructions", \ + {"jir" : "jabber:iq:register", \ + "jxd" : "jabber:x:data"}) + self.assertEquals(len(instructions), 1) + self.assertEquals(instructions[0].content, \ + Lang.en.register_instructions) + fields = iq_sent.xpath_eval("jir:query/jxd:x/jxd:field", \ + {"jir" : "jabber:iq:register", \ + "jxd" : "jabber:x:data"}) + self.assertEquals(len(fields), 1) + self.assertEquals(len([field + for field in fields \ + if field.prop("type") == "text-single" \ + and field.prop("var") == "name" \ + and field.prop("label") == \ + Lang.en.account_name]), \ + 1) def test_handle_set_register(self): pass