diff options
author | David Rousselie <dax@happycoders.org> | 2008-05-15 00:02:08 +0400 |
---|---|---|
committer | David Rousselie <dax@happycoders.org> | 2008-05-15 00:02:08 +0400 |
commit | af9ae34bf8a603045195dbf4fe496cceff58b9b0 (patch) | |
tree | aa929af6b1acfb10f088fcd27a85ce9cf96c5310 | |
parent | 53cc7b91cac1f05a5ea79b8c419740e3f976ecbd (diff) |
Send presence when cancelling an account error
darcs-hash:20080514200208-86b55-93374592f277f9b84bcad45ecf2754368f057f22.gz
-rw-r--r-- | src/jmc/jabber/feeder.py | 12 | ||||
-rw-r--r-- | src/jmc/jabber/tests/component.py | 64 |
2 files changed, 62 insertions, 14 deletions
diff --git a/src/jmc/jabber/feeder.py b/src/jmc/jabber/feeder.py index b469c40..6f798d2 100644 --- a/src/jmc/jabber/feeder.py +++ b/src/jmc/jabber/feeder.py @@ -4,18 +4,18 @@ ## Login : David Rousselie <dax@happycoders.org> ## Started on Wed Mar 5 19:15:04:42 2008 David Rousselie ## $Id$ -## +## ## Copyright (C) 2006 David Rousselie ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. -## +## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. -## +## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -64,7 +64,7 @@ class MailFeeder(Feeder): _account.mark_all_as_read() _account.disconnect() _account.first_check = False - _account.error = None + self.component.account_manager.cancel_account_error(_account) return True except Exception, e: if _account.connected: @@ -129,7 +129,7 @@ class MailFeeder(Feeder): raise Exception("Unkown action: " + str(action) \ + "\nPlease reconfigure account.") _account.disconnect() - _account.error = None + self.component.account_manager.cancel_account_error(_account) self.__logger.debug("\nCHECK_MAIL ends " + _account.jid) except Exception, e: if _account.connected: @@ -163,7 +163,7 @@ class MailSender(HeadlineSender): + unicode(JID(to_account.jid).domain) replyto_address_node.setProp("jid", replyto_jid) return message - + def create_message(self, to_account, data): """Send given emails (in data) as Jabber messages""" email_from, subject, body = data diff --git a/src/jmc/jabber/tests/component.py b/src/jmc/jabber/tests/component.py index 670ab07..03b39d8 100644 --- a/src/jmc/jabber/tests/component.py +++ b/src/jmc/jabber/tests/component.py @@ -24,6 +24,7 @@ import unittest import sys import time +import logging from sqlobject import * from sqlobject.dbconnection import TheURIOpener @@ -322,7 +323,6 @@ class MailComponent_TestCase(JCLTestCase): self.assertTrue(account11.has_connected) def test_feed_retrieve_no_mail(self): - model.db_connect() account11 = MockIMAPAccount(user=User(jid="test1@test.com"), name="account11", jid="account11@jmc.test.com") @@ -340,7 +340,32 @@ class MailComponent_TestCase(JCLTestCase): self.assertFalse(account11.connected) self.assertTrue(account11.has_connected) self.assertEquals(len(self.comp.stream.sent), 0) - model.db_disconnect() + + def test_feed_cancel_error(self): + account11 = MockIMAPAccount(user=User(jid="test1@test.com"), + name="account11", + jid="account11@jmc.test.com") + account11._action = MailAccount.RETRIEVE + account11.status = account.DND + account11.error = "An error" + account11.first_check = False + account11.lastcheck = 1 + account11.interval = 2 + account11.password = "password" + account11.get_new_mail_list = lambda: [] + result = self.comp.handler.feeder.feed(account11) + self.assertEquals(account11.error, None) + self.assertEquals(result, []) + self.assertEquals(account11.lastcheck, 0) + self.assertFalse(account11.connected) + self.assertTrue(account11.has_connected) + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") + self.assertEquals(sent[0].xmlnode.name, "presence") + self.assertEquals(sent[0].xmlnode.children.name, "show") + self.assertEquals(sent[0].xmlnode.children.content, "online") def test_feed_retrieve_mail(self): def mock_get_mail(index): @@ -434,7 +459,6 @@ class MailComponent_TestCase(JCLTestCase): # 'initialize_live_email' test methods ########################################################################### def test_initialize_live_email(self): - model.db_connect() account11 = MockIMAPAccount(user=User(jid="test1@test.com"), name="account11", jid="account11@jmc.test.com") @@ -451,7 +475,6 @@ class MailComponent_TestCase(JCLTestCase): self.assertFalse(account11.connected) self.assertTrue(account11.has_connected) self.assertTrue(account11.marked_all_as_read) - model.db_disconnect() def test_initialize_live_email_connection_error(self): def raiser(): @@ -486,7 +509,6 @@ class MailComponent_TestCase(JCLTestCase): def test_initialize_live_email_mark_as_read_error(self): def raiser(): raise Exception - model.db_connect() account11 = MockIMAPAccount(user=User(jid="test1@test.com"), name="account11", jid="account11@jmc.test.com") @@ -513,12 +535,10 @@ class MailComponent_TestCase(JCLTestCase): self.assertFalse(account11.connected) self.assertTrue(account11.has_connected) self.assertFalse(account11.marked_all_as_read) - model.db_disconnect() def test_initialize_live_email_disconnection_error(self): def raiser(): raise Exception - model.db_connect() account11 = MockIMAPAccount(user=User(jid="test1@test.com"), name="account11", jid="account11@jmc.test.com") @@ -546,7 +566,31 @@ class MailComponent_TestCase(JCLTestCase): self.assertFalse(account11.connected) self.assertTrue(account11.has_connected) self.assertTrue(account11.marked_all_as_read) - model.db_disconnect() + + def test_initialize_live_email_cancel_error(self): + account11 = MockIMAPAccount(user=User(jid="test1@test.com"), + name="account11", + jid="account11@jmc.test.com") + account11.status = account.DND + account11.error = "An error" + self.assertTrue(account11.first_check) + account11.live_email_only = True + account11.password = "password" + continue_checking = self.comp.handler.feeder.initialize_live_email(account11) + self.assertEquals(continue_checking, True) + self.assertFalse(account11.first_check) + self.assertFalse(account11.waiting_password_reply) + self.assertEquals(account11.error, None) + self.assertFalse(account11.connected) + self.assertTrue(account11.has_connected) + self.assertTrue(account11.marked_all_as_read) + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") + self.assertEquals(sent[0].xmlnode.name, "presence") + self.assertEquals(sent[0].xmlnode.children.name, "show") + self.assertEquals(sent[0].xmlnode.children.content, "online") def test_disco_get_info_imap_node(self): self.comp.stream = MockStream() @@ -1463,4 +1507,8 @@ def suite(): return test_suite if __name__ == '__main__': + logger = logging.getLogger() + logger.addHandler(logging.StreamHandler()) + if '-v' in sys.argv: + logger.setLevel(logging.INFO) unittest.main(defaultTest='suite') |