diff options
author | David Rousselie <dax@happycoders.org> | 2007-10-31 19:55:47 +0300 |
---|---|---|
committer | David Rousselie <dax@happycoders.org> | 2007-10-31 19:55:47 +0300 |
commit | 511e4916c3f5b2b013fb1bd8d5ba35b7520ee756 (patch) | |
tree | 7dac6bbe343610f7f7318760a088625f3c46cd1e /src/jmc/model/tests | |
parent | e24224c873940a8be265d544baa2d57e06fbc923 (diff) |
Store mailbox with "/" delimiter and discover when populating account what is the real delimiter
darcs-hash:20071031165547-86b55-50bb56e0db9ff77385656b126d7f0f2a02ff3d3a.gz
Diffstat (limited to 'src/jmc/model/tests')
-rw-r--r-- | src/jmc/model/tests/account.py | 120 |
1 files changed, 97 insertions, 23 deletions
diff --git a/src/jmc/model/tests/account.py b/src/jmc/model/tests/account.py index a99b88d..5df4d5e 100644 --- a/src/jmc/model/tests/account.py +++ b/src/jmc/model/tests/account.py @@ -242,8 +242,8 @@ class IMAPAccount_TestCase(InheritableAccount_TestCase): self.imap_account.ssl = False self.account_class = IMAPAccount - def make_test(responses=None, queries=None, core=None): - def inner(self): + def make_test(self, responses=None, queries=None, core=None): + def inner(): self.server = server.DummyServer("localhost", 1143) thread.start_new_thread(self.server.serve, ()) self.server.responses = ["* OK [CAPABILITY IMAP4 LOGIN-REFERRALS " + \ @@ -261,20 +261,25 @@ class IMAPAccount_TestCase(InheritableAccount_TestCase): if queries: self.server.queries += queries self.server.queries += ["^[^ ]* LOGOUT"] - self.imap_account.connect() + if not self.imap_account.connected: + self.imap_account.connect() self.failUnless(self.imap_account.connection, \ "Cannot establish connection") if core: model.db_connect() core(self) model.db_disconnect() - self.imap_account.disconnect() + if self.imap_account.connected: + self.imap_account.disconnect() self.failUnless(self.server.verify_queries()) return inner - test_connection = make_test() + def test_connection(self): + test_func = self.make_test() + test_func() - test_get_mail_list = make_test([lambda data: "* 42 EXISTS\n* 1 RECENT\n* OK" +\ + def test_get_mail_list(self): + test_func = self.make_test([lambda data: "* 42 EXISTS\n* 1 RECENT\n* OK" +\ " [UNSEEN 9]\n* FLAGS (\Deleted \Seen\*)\n*" +\ " OK [PERMANENTFLAGS (\Deleted \Seen\*)\n" + \ data.split()[0] + \ @@ -285,22 +290,60 @@ class IMAPAccount_TestCase(InheritableAccount_TestCase): "^[^ ]* SEARCH RECENT"], \ lambda self: \ self.assertEquals(self.imap_account.get_mail_list(), ['9', '10'])) - - test_get_mail_summary = make_test([lambda data: "* 42 EXISTS\r\n* 1 RECENT\r\n* OK" +\ - " [UNSEEN 9]\r\n* FLAGS (\Deleted \Seen\*)\r\n*" +\ - " OK [PERMANENTFLAGS (\Deleted \Seen\*)\r\n" + \ - data.split()[0] + \ - " OK [READ-WRITE] SELECT completed\r\n", \ - lambda data: "* 1 FETCH ((RFC822) {12}\r\nbody" + \ - " text\r\n)\r\n" + \ - data.split()[0] + " OK FETCH completed\r\n"], \ - ["^[^ ]* EXAMINE INBOX", \ - "^[^ ]* FETCH 1 \(RFC822\)"], \ - lambda self: self.assertEquals(self.imap_account.get_mail_summary(1), \ - (u"From : None\nSubject : None\n\n", \ - u"None"))) - - test_get_mail = make_test([lambda data: "* 42 EXISTS\r\n* 1 RECENT\r\n* OK" +\ + test_func() + + def test_get_mail_list_delimiter1(self): + self.imap_account.mailbox = "INBOX/dir1/subdir2" + self.imap_account.delimiter = "." + test_func = self.make_test( \ + [lambda data: "* 42 EXISTS\n* 1 RECENT\n* OK" + \ + " [UNSEEN 9]\n* FLAGS (\Deleted \Seen\*)\n*" + \ + " OK [PERMANENTFLAGS (\Deleted \Seen\*)\n" + \ + data.split()[0] + \ + " OK [READ-WRITE] SELECT completed\n", \ + lambda data: "* SEARCH 9 10 \n" + \ + data.split()[0] + " OK SEARCH completed\n"], \ + ["^[^ ]* SELECT \"?INBOX\.dir1\.subdir2\"?", + "^[^ ]* SEARCH RECENT"], \ + lambda self: \ + self.assertEquals(self.imap_account.get_mail_list(), ['9', '10'])) + test_func() + + def test_get_mail_list_delimiter2(self): + self.imap_account.mailbox = "INBOX/dir1/subdir2" + self.imap_account.delimiter = "/" + test_func = self.make_test( \ + [lambda data: "* 42 EXISTS\n* 1 RECENT\n* OK" + \ + " [UNSEEN 9]\n* FLAGS (\Deleted \Seen\*)\n*" + \ + " OK [PERMANENTFLAGS (\Deleted \Seen\*)\n" + \ + data.split()[0] + \ + " OK [READ-WRITE] SELECT completed\n", \ + lambda data: "* SEARCH 9 10 \n" + \ + data.split()[0] + " OK SEARCH completed\n"], \ + ["^[^ ]* SELECT \"?INBOX/dir1/subdir2\"?", + "^[^ ]* SEARCH RECENT"], \ + lambda self: \ + self.assertEquals(self.imap_account.get_mail_list(), ['9', '10'])) + test_func() + + def test_get_mail_summary(self): + test_func = self.make_test([lambda data: "* 42 EXISTS\r\n* 1 RECENT\r\n* OK" +\ + " [UNSEEN 9]\r\n* FLAGS (\Deleted \Seen\*)\r\n*" +\ + " OK [PERMANENTFLAGS (\Deleted \Seen\*)\r\n" + \ + data.split()[0] + \ + " OK [READ-WRITE] SELECT completed\r\n", \ + lambda data: "* 1 FETCH ((RFC822) {12}\r\nbody" + \ + " text\r\n)\r\n" + \ + data.split()[0] + " OK FETCH completed\r\n"], + ["^[^ ]* EXAMINE INBOX", + "^[^ ]* FETCH 1 \(RFC822\)"], + lambda self: self.assertEquals(self.imap_account.get_mail_summary(1), + (u"From : None\nSubject : None\n\n", + u"None"))) + test_func() + + def test_get_mail(self): + test_func = self.make_test([lambda data: "* 42 EXISTS\r\n* 1 RECENT\r\n* OK" +\ " [UNSEEN 9]\r\n* FLAGS (\Deleted \Seen\*)\r\n*" +\ " OK [PERMANENTFLAGS (\Deleted \Seen\*)\r\n" + \ data.split()[0] + \ @@ -313,8 +356,10 @@ class IMAPAccount_TestCase(InheritableAccount_TestCase): lambda self: self.assertEquals(self.imap_account.get_mail(1), \ (u"From : None\nSubject : None\n\nbody text\r\n\n", \ u"None"))) + test_func() - test_build_folder_cache = make_test(\ + def test_build_folder_cache(self): + test_func = self.make_test(\ [lambda data: '* LIST () "." "INBOX"\r\n' + \ '* LIST () "." "INBOX.dir1"\r\n' + \ '* LIST () "." "INBOX.dir1.subdir1"\r\n' + \ @@ -328,6 +373,7 @@ class IMAPAccount_TestCase(InheritableAccount_TestCase): {"subdir1": {}, "subdir2": {}}, "dir2": {}}})) + test_func() def test_ls_dir_base(self): self.test_build_folder_cache() @@ -356,6 +402,34 @@ class IMAPAccount_TestCase(InheritableAccount_TestCase): self.assertEquals(result, ["subdir1", "subdir2"]) + def test_populate_handler(self): + self.assertEquals(".", self.imap_account.delimiter) + self.imap_account.mailbox = "INBOX.dir1.subdir2" + def call_func(self): + self.imap_account.populate_handler() + self.assertEquals("INBOX/dir1/subdir2", self.imap_account.mailbox) + test_func = self.make_test(\ + [lambda data: '* LIST () "." "INBOX.dir1.subdir2"\r\n' + \ + data.split()[0] + ' OK LIST completed\r\n'], + ["^[^ ]* LIST \"?INBOX.dir1.subdir2\"? \*"], + call_func) + test_func() + + def test_populate_handler_wrong_mailbox(self): + self.assertEquals(".", self.imap_account.delimiter) + self.imap_account.mailbox = "INBOX.dir1.subdir2" + def call_func(self): + try: + self.imap_account.populate_handler() + except Exception, e: + return + self.fail("Exception should have been raised") + test_func = self.make_test(\ + [lambda data: data.split()[0] + ' ERR LIST completed\r\n'], + ["^[^ ]* LIST \"?INBOX.dir1.subdir2\"? \*"], + call_func) + test_func() + class SMTPAccount_TestCase(Account_TestCase): def setUp(self): JCLTestCase.setUp(self, tables=[Account, ExampleAccount, User, |