Add unit testing for the mailbox acls parsing functionality
[imap-restore-mail] / unit_tester.py
CommitLineData
79c28101
PD
1'''
2restore-mail-inject.py - Tool to inject mails via IMAP
3
4Copyright (c) 2012 Intra2net AG
5'''
6
7import unittest
8import os
9from file_iterator import FileIterator
10
11class 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
72if __name__ == '__main__':
73 unittest.main()