Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dax/jmc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rousselie <dax@happycoders.org>2008-05-15 00:02:08 +0400
committerDavid Rousselie <dax@happycoders.org>2008-05-15 00:02:08 +0400
commitaf9ae34bf8a603045195dbf4fe496cceff58b9b0 (patch)
treeaa929af6b1acfb10f088fcd27a85ce9cf96c5310
parent53cc7b91cac1f05a5ea79b8c419740e3f976ecbd (diff)
Send presence when cancelling an account error
darcs-hash:20080514200208-86b55-93374592f277f9b84bcad45ecf2754368f057f22.gz
-rw-r--r--src/jmc/jabber/feeder.py12
-rw-r--r--src/jmc/jabber/tests/component.py64
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')