ea9747a69416ea4819e06506e922e14d7d681c1f
[imap-restore-mail] / src / unit_tester.py
1 '''
2 restore-mail-inject.py - Tool to inject mails via IMAP
3
4 Copyright (c) 2012 Intra2net AG
5 Author: Plamen Dimitrov and Thomas Jarosch
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16 '''
17
18 import unittest
19 import os
20 from file_iterator import FileIterator
21
22 class FileContentsParse(unittest.TestCase):
23     """Test the retrieved acls from a dummy mailbox list file"""
24
25     # class attributes
26     # FileIterator instance to be tested for parsing
27     file_iter = None
28     # dummy filename to be used for parsing the acls
29     dummy_filename = None
30     # dummy file descriptor to be used for parsing the acls
31     dummy_file = None
32
33     # wrong naming conventions are due to python unittest library requirement
34     def setUp(self):
35         """Prepares the testing confitions."""
36         self.file_iter = FileIterator()
37         self.dummy_filename = "test_acls.dump"
38         self.dummy_file = open(self.dummy_filename, "w")
39         self.dummy_file.write("user.00schneider\t0 default 00schneider\tlrswipkxtecda\t\n"
40                               "user.00schneider.ibx_poped\t0 default 00schneider\tlrswipkxtecda\t\n"
41                               "user.00schneider.ibx_sub\t0 default 00schneider\tlrswpkxtecda\t\n"
42                               "user.abrus\t0 default abrus\tlrswipkxtecda\t\n"
43                               "user.abrus.Aufgaben\t0 default abrus\tlrswipkxtecda\tabrus2\tlrswikxtecda\t\n"
44                               "user.abrus.Entw&APw-rfe\t0 default abrus\tlrswipkxtecda\t\n"
45                               "user.abrus.Gesendete Objekte\t0 default abrus\tlrswipkxtecda\t\n"
46                               "user.abrus.Junk-E-Mail\t0 default abrus\tlrswipkxtecda\t\n"
47                               "user.abrus.Kalender\t0 default abrus\tlrswipkxtecda\t\n"
48                               "user.abrus.Kontakte\t0 default abrus\tlrswipkxtecda\t\n"
49                               "user.abrus.Notizen\t0 default abrus\tlrswipkxtecda\t\n"
50                               "user.abrus.foobar\t0 default abrus\tlrswipkxtecda\t\n")
51         self.dummy_file.close()        
52
53     # wrong naming conventions are due to python unittest library requirement
54     def tearDown(self):
55
56         """Clean up the testing conditions"""
57         os.unlink(self.dummy_filename)
58
59     def test_mboxlist_firstline(self):
60
61         """Test whether first line was parsed correctly."""
62         parsed_acls = self.file_iter.load_mailbox_list(self.dummy_filename)
63         self.assertIn("user.00schneider", parsed_acls)
64         self.assertIn("00schneider", parsed_acls["user.00schneider"])
65         self.assertEqual(parsed_acls["user.00schneider"]["00schneider"], "lrswipkxtecda", "Wrong acls were parsed for a user.")
66
67     def test_mboxlist_totals(self):
68
69         """Test whether there are missing parsed lines, mailboxs, and users."""
70         parsed_acls = self.file_iter.load_mailbox_list(self.dummy_filename)
71         self.assertEqual(len(parsed_acls), 12)
72         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
73         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
74         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
75         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
76         self.assertEqual(len(parsed_acls.popitem()[1]), 2)
77         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
78         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
79         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
80         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
81         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
82         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
83         self.assertEqual(len(parsed_acls.popitem()[1]), 1)
84         
85
86 if __name__ == '__main__':
87     unittest.main()