8c77d1d80c0d5ac51d124de0b12dc50178c23589
[imap-restore-mail] / unit_tester.py
1 '''
2 restore-mail-inject.py - Tool to inject mails via IMAP
3
4 Copyright (c) 2012 Intra2net AG
5 '''
6
7 import unittest
8 import os
9 from file_iterator import FileIterator
10
11 class FileContentsParse(unittest.TestCase):
12     """Test the retrieved acls from a dummy mailbox list file"""
13
14     # class attributes
15     # FileIterator instance to be tested for parsing
16     file_iter = None
17     # dummy filename to be used for parsing the acls
18     dummy_filename = None
19     # dummy file descriptor to be used for parsing the acls
20     dummy_file = None
21
22     # wrong naming conventions are due to python unittest library requirement
23     def setUp(self):
24         """Prepares the testing confitions."""
25         self.file_iter = FileIterator()
26         self.dummy_filename = "test_acls.dump"
27         self.dummy_file = open(self.dummy_filename, "w")
28         self.dummy_file.write("user.00schneider\t0 default 00schneider\tlrswipkxtecda\t\n"
29                               "user.00schneider.ibx_poped\t0 default 00schneider\tlrswipkxtecda\t\n"
30                               "user.00schneider.ibx_sub\t0 default 00schneider\tlrswpkxtecda\t\n"
31                               "user.abrus\t0 default abrus\tlrswipkxtecda\t\n"
32                               "user.abrus.Aufgaben\t0 default abrus\tlrswipkxtecda\tabrus2\tlrswikxtecda\t\n"
33                               "user.abrus.Entw&APw-rfe\t0 default abrus\tlrswipkxtecda\t\n"
34                               "user.abrus.Gesendete Objekte\t0 default abrus\tlrswipkxtecda\t\n"
35                               "user.abrus.Junk-E-Mail\t0 default abrus\tlrswipkxtecda\t\n"
36                               "user.abrus.Kalender\t0 default abrus\tlrswipkxtecda\t\n"
37                               "user.abrus.Kontakte\t0 default abrus\tlrswipkxtecda\t\n"
38                               "user.abrus.Notizen\t0 default abrus\tlrswipkxtecda\t\n"
39                               "user.abrus.foobar\t0 default abrus\tlrswipkxtecda\t\n")
40         self.dummy_file.close()        
41
42     # wrong naming conventions are due to python unittest library requirement
43     def tearDown(self):
44         """Clean up the testing conditions"""
45         os.unlink(self.dummy_filename)
46
47     def test_mboxlist_firstline(self):
48         """Test whether first line was parsed correctly."""
49         parsed_acls = self.file_iter.load_mailbox_list(self.dummy_filename)
50         self.assertIn("user.00schneider", parsed_acls)
51         self.assertIn("00schneider", parsed_acls["user.00schneider"])
52         self.assertEqual(parsed_acls["user.00schneider"]["00schneider"], "lrswipkxtecda", "Wront acls were parsed for a user.")
53
54     def test_mboxlist_totals(self):
55         """Test whether there are missing parsed lines, mailboxs, and users."""
56         parsed_acls = self.file_iter.load_mailbox_list(self.dummy_filename)
57         self.assertEqual(len(parsed_acls), 12)
58         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
59         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
60         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
61         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
62         self.assertEqual(len(parsed_acls.popitem()[1]), 2)
63         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
64         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
65         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
66         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
67         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
68         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
69         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
70         
71
72 if __name__ == '__main__':
73     unittest.main()