Commit | Line | Data |
---|---|---|
c9da760a PD |
1 | ''' |
2 | unit_tester.py - The module contains the MailScriptTester class. | |
3 | ||
4 | Copyright (c) 2012 Intra2net AG | |
5 | Author: Plamen Dimitrov | |
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 | |
db3f09a6 PD |
19 | import datetime |
20 | from mail_date_parser import MailDateParser | |
c9da760a | 21 | |
95fe161a | 22 | class 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 | |
db3f09a6 | 27 | date_interp = MailDateParser() |
7a1d4c35 | 28 | # datetime for comparison with extracted datetimes and assertions |
db3f09a6 | 29 | true_date = datetime.datetime(2007, 12, 11, 18, 24, 35) |
7a1d4c35 | 30 | |
db3f09a6 PD |
31 | def set_up(self): |
32 | """Prepares the testing confitions.""" | |
33 | # tester has problems if object is set to none so | |
34 | # attributes are prepared above | |
c9da760a | 35 | |
7a1d4c35 | 36 | def test_received_date_extraction1(self): |
c9da760a | 37 | """Tests the date extraction method.""" |
db3f09a6 | 38 | date = "Tue, 11 Dec 2007 18:24:35 +0100" |
c9da760a PD |
39 | extracted_date = self.date_interp.extract_received_date(date) |
40 | self.assertEqual(extracted_date, self.true_date, "Failed date format 1") | |
41 | ||
7a1d4c35 | 42 | def test_received_date_extraction2(self): |
c9da760a | 43 | """Tests the date extraction method.""" |
db3f09a6 | 44 | date = "11 Dec 2007 \r\n18:24:35 +0100" |
c9da760a PD |
45 | extracted_date = self.date_interp.extract_received_date(date) |
46 | self.assertEqual(extracted_date, self.true_date, "Failed date format 2") | |
47 | return | |
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 | |
111 | if __name__ == '__main__': | |
112 | unittest.main() |