Rename main module to imap_fix_internaldate including header comments
[imap-fix-internaldate] / src / unit_tester.py
CommitLineData
c9da760a
PD
1'''
2unit_tester.py - The module contains the MailScriptTester class.
3
4Copyright (c) 2012 Intra2net AG
5Author: Plamen Dimitrov
6
7This program is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation, either version 3 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16'''
17
18import unittest
db3f09a6
PD
19import datetime
20from mail_date_parser import MailDateParser
c9da760a 21
95fe161a 22class DateParseTester(unittest.TestCase):
db3f09a6 23 """Used to test the date retrievel and the MailDateParser class."""
c9da760a 24
7a1d4c35
PD
25 # class attributes
26 # DateInterpreter instance testing the DateInterpreter methods
d91be016 27 date_interp = None
7a1d4c35 28 # datetime for comparison with extracted datetimes and assertions
d91be016 29 true_date = None
7a1d4c35 30
d91be016
PD
31 # wrong naming conventions are due to python unittest library
32 def setUp(self):
db3f09a6 33 """Prepares the testing confitions."""
d91be016
PD
34 self.date_interp = MailDateParser()
35 self.true_date = datetime.datetime(2007, 12, 11, 18, 24, 35)
c9da760a 36
7a1d4c35 37 def test_received_date_extraction1(self):
c9da760a 38 """Tests the date extraction method."""
db3f09a6 39 date = "Tue, 11 Dec 2007 18:24:35 +0100"
c9da760a
PD
40 extracted_date = self.date_interp.extract_received_date(date)
41 self.assertEqual(extracted_date, self.true_date, "Failed date format 1")
42
7a1d4c35 43 def test_received_date_extraction2(self):
c9da760a 44 """Tests the date extraction method."""
db3f09a6 45 date = "11 Dec 2007 \r\n18:24:35 +0100"
c9da760a
PD
46 extracted_date = self.date_interp.extract_received_date(date)
47 self.assertEqual(extracted_date, self.true_date, "Failed date format 2")
c9da760a 48
7a1d4c35 49 def test_received_date_extraction3(self):
c9da760a 50 """Tests the date extraction method."""
db3f09a6 51 date = "11 Dec 2007 18:24:35 +0100"
c9da760a
PD
52 extracted_date = self.date_interp.extract_received_date(date)
53 self.assertEqual(extracted_date, self.true_date, "Failed date format 3")
54
7a1d4c35 55 def test_received_date_extraction4(self):
c9da760a 56 """Tests the date extraction method."""
db3f09a6 57 date = "11 Dec 2007 18:24:35"
c9da760a
PD
58 extracted_date = self.date_interp.extract_received_date(date)
59 #should not be equal because of time zone assumption
60 self.assertNotEqual(extracted_date, self.true_date, "Failed date format 4")
61
7a1d4c35 62 def test_received_date_extraction5(self):
c9da760a 63 """Tests the received date extraction method."""
db3f09a6 64 date = "11 Dec 2007 18:24:35 GMT"
c9da760a
PD
65 extracted_date = self.date_interp.extract_received_date(date)
66 #should not be equal because of time zone assumption
67 self.assertNotEqual(extracted_date, self.true_date, "Failed date format 5")
68
7a1d4c35
PD
69 def test_received_date_extraction6(self):
70 """Tests the received date extraction method."""
db3f09a6
PD
71 date = 'Received: from intranator.m.i2n ([unix socket])'\
72 'by intranator.m.i2n with LMTPA; Tue, 11 Dec 2007 18:24:35'\
73 '+0100Received: from localhost (intranator.m.i2n [127.0.0.1])'\
74 'by localhost (Postfix) with ESMTP id 895812AC54for <intra2net_thomas@intranator.m.i2n>;'\
75 'Sun, 13 Mar 2011 18:47:18 +0100 (CET)Received: from re04.intra2net.com '\
76 '(re04.intra2net.com [82.165.46.26])(using TLSv1 with cipher ADH-AES256-SHA '\
77 '(256/256 bits))(No client certificate requested)by intranator.m.i2n (Postfix) with '\
78 'ESMTPS id 28DB92AC53for <thomas.jarosch@intra2net.com>; Sun, 13 Mar 2011 18:47:15 +0100 '\
79 '(CET)Received: from postfix.charite.de (postfix.charite.de [141.42.206.35])(using TLSv1 '\
80 'with cipher ADH-AES256-SHA (256/256 bits))(No client certificate requested)by '\
81 're04.intra2net.com (Postfix) with ESMTP id C054A3010Afor <thomas.jarosch@intra2net.com>; '\
82 'Sun, 13 Mar 2011 18:47:14 +0100 (CET)Received: from localhost (localhost [127.0.0.1])by '\
83 'de.postfix.org (Postfix) with ESMTP id 7FCCFF7879for <thomas.jarosch@intra2net.com>; '\
84 'Sun, 13 Mar 2011 18:47:14 +0100 (CET)Received: from de.postfix.org ([127.0.0.1])by '\
85 'localhost (de.postfix.org [127.0.0.1]) (amavisd-new, port 10026)with LMTP id '\
86 'YSXF-vf3+6E1 for <thomas.jarosch@intra2net.com>;Sun, 13 Mar 2011 18:47:14 +0100 (CET)'\
87 'Received: from de.postfix.org (localhost [127.0.0.1])by de.postfix.org (Postfix) with '\
88 'ESMTP id 3C3123DF1Efor <thomas.jarosch@intra2net.com>; Sun, 13 Mar 2011 18:46:33 +0100 '\
89 '(CET)Received: from localhost (localhost [127.0.0.1])by de.postfix.org (Postfix) with '\
90 'ESMTP id AB6CE3DBD2for <amavis-users@amavis.org>; Sun, 13 Mar 2011 18:45:57 +0100 (CET)'\
91 'Received: from de.postfix.org ([127.0.0.1])by localhost (de.postfix.org [127.0.0.1]) '\
92 '(amavisd-new, port 10024)with ESMTP id mBYiZO8wREeS for <amavis-users@amavis.org>;Sun, '\
93 '13 Mar 2011 18:45:56 +0100 (CET)Received: from mail.inetmsg.com (mail.inetmsg.com '\
94 '[173.10.94.185])by de.postfix.org (Postfix) with ESMTPSfor <amavis-users@amavis.org>; '\
95 'Sun, 13 Mar 2011 18:45:55 +0100 (CET)Received: from [192.168.1.107] (fw1.inetmsg.com '\
96 '[10.20.30.253])(using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits))'\
97 '(No client certificate requested)by mail.inetmsg.com (INetMsg Mail Service) with ESMTPSA '\
98 'id 0B95326CD1for <amavis-users@amavis.org>; Sun, 13 Mar 2011 10:45:41 -0700 (PDT)"]]'
7a1d4c35
PD
99 extracted_date = self.date_interp.extract_received_date(date)
100 #should not be equal because of time zone assumption
101 self.assertEqual(extracted_date, self.true_date, "Failed date format 6")
102
c9da760a
PD
103 def test_compare_dates(self):
104 """Tests the date comparison method."""
db3f09a6 105 true_date2 = datetime.datetime(2007, 12, 11, 18, 34, 35)
c9da760a 106 #is difference of 10 mins significant if tolerance is 9 mins
db3f09a6 107 self.assertTrue(bool(self.date_interp.compare_dates(self.true_date, true_date2, 9*60)), "Failed at comparison test")
c9da760a 108 #is difference of 10 mins significant if tolerance is 11 mins
db3f09a6 109 self.assertFalse(bool(self.date_interp.compare_dates(self.true_date, true_date2, 11*60)), "Failed at comparison test")
c9da760a
PD
110
111if __name__ == '__main__':
112 unittest.main()