''' The module contains the FileContentsParse class. Copyright (c) 2012 Intra2net AG Author: Plamen Dimitrov and Thomas Jarosch 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 3 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. ''' import unittest import os from file_iterator import FileIterator class FileContentsParse(unittest.TestCase): """Test the retrieved acls from a dummy mailbox list file""" # class attributes # FileIterator instance to be tested for parsing file_iter = None # dummy filename to be used for parsing the acls dummy_filename = None # dummy file descriptor to be used for parsing the acls dummy_file = None # wrong naming conventions are due to python unittest library requirement def setUp(self): """Prepares the testing confitions.""" self.file_iter = FileIterator() self.dummy_filename = "test_acls.dump" self.dummy_file = open(self.dummy_filename, "w") self.dummy_file.write("user.00schneider\t0 default 00schneider\tlrswipkxtecda\t\n" "user.mit^punkt\t0 default mit.punkt\tlrswipkxtecda\tinternaldate_test\tlr\t\n" "user.mit^punkt.Gesendete Objekte\t0 default mit.punkt\tlrswipktecda\t\n" "user.00schneider.Gesendete Objekte\t0 default 00schneider\tlrswipkxtecda\t\n" "user.00schneider.ibx_sub\t0 default 00schneider\tlrswpkxtecda\t\n" "user.abrus\t0 default abrus\tlrswipkxtecda\t\n" "user.abrus.Aufgaben\t0 default abrus\tlrswipkxtecda\tabrus2\tlrswikxtecda\t\n" "user.abrus.Entw&APw-rfe\t0 default abrus\tlrswipkxtecda\t\n" "user.abrus.Gesendete Objekte\t0 default abrus\tlrswipkxtecda\t\n" "user.abrus.Junk-E-Mail\t0 default abrus\tlrswipkxtecda\t\n" "user.abrus.Kalender\t0 default abrus\tlrswipkxtecda\t\n" "user.abrus.Kontakte\t0 default abrus\tlrswipkxtecda\t\n" "user.abrus.Notizen\t0 default abrus\tlrswipkxtecda\t\n" "user.abrus.foobar\t0 default abrus\tlrswipkxtecda\t\n") self.dummy_file.close() self.dummy_user = "tester" # wrong naming conventions are due to python unittest library requirement def tearDown(self): """Clean up the testing conditions""" os.unlink(self.dummy_filename) def test_mboxlist_parsed_line1(self): """Test whether a line was parsed correctly.""" self.file_iter.load_mailbox_list(self.dummy_filename) self.assertEqual(len(self.file_iter.get_mailbox_acls("INBOX/Gesendete Objekte", "00schneider")), 1) self.assertIn("00schneider", self.file_iter.get_mailbox_acls("INBOX/Gesendete Objekte", "00schneider")) self.assertEqual(self.file_iter.get_mailbox_acls("INBOX/Gesendete Objekte", "00schneider")["00schneider"], "lrswipkxtecda", "Wrong acls were parsed for a user.") def test_mboxlist_parsed_line2(self): """Test whether a line was parsed correctly.""" self.file_iter.load_mailbox_list(self.dummy_filename) self.assertEqual(len(self.file_iter.get_mailbox_acls("INBOX", "mit.punkt")), 2) self.assertEqual(len(self.file_iter.get_mailbox_acls("INBOX/Gesendete Objekte", "mit.punkt")), 1) self.assertIn("mit.punkt", self.file_iter.get_mailbox_acls("INBOX/Gesendete Objekte", "mit.punkt")) self.assertEqual(self.file_iter.get_mailbox_acls("INBOX/Gesendete Objekte", "mit.punkt")["mit.punkt"], "lrswipktecda", "Wrong acls were parsed for a user.") def test_mboxlist_totals(self): """Test whether there are missing parsed lines, mailboxs, and users.""" self.file_iter.load_mailbox_list(self.dummy_filename) self.assertEqual(len(self.file_iter._file_acls), 13) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 2) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) self.assertEqual(len(self.file_iter._file_acls.popitem()[1]), 1) if __name__ == '__main__': unittest.main()