diff --git a/test/test_mailgw.py b/test/test_mailgw.py
index 5fed0029dc83f2217b1a48cad58741b589f7f589..138059bafc64a083a9285da2ba8c7c9a83b9b69d 100644 (file)
--- a/test/test_mailgw.py
+++ b/test/test_mailgw.py
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: test_mailgw.py,v 1.38 2003-01-15 22:17:20 kedder Exp $
+# $Id: test_mailgw.py,v 1.44 2003-04-17 06:51:44 richard Exp $
import unittest, cStringIO, tempfile, os, shutil, errno, imp, sys, difflib
+import rfc822
# Note: Should parse emails according to RFC2822 instead of performing a
# literal string comparision. Parsing the messages allows the tests to work for
#except ImportError :
# import rfc822 as email
-from roundup.mailgw import MailGW, Unauthorized
+from roundup.mailgw import MailGW, Unauthorized, uidFromAddress
from roundup import init, instance
# TODO: make this output only enough equal lines for context, not all of
except OSError, error:
if error.errno not in (errno.ENOENT, errno.ESRCH): raise
# create the instance
- init.install(self.dirname, 'classic', 'anydbm')
+ init.install(self.dirname, 'templates/classic')
+ init.write_select_db(self.dirname, 'anydbm')
init.initialise(self.dirname, 'sekrit')
# check we can load the package
self.instance = instance.open(self.dirname)
This is a test submission of a new issue.
-
----------
assignedto: richard
messages: 1
title: Testing...
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a second followup
-
----------
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a followup
-
----------
assignedto: -> mary
nosy: +john, mary
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a followup
-
----------
assignedto: -> mary
nosy: +john, mary
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a followup
-
----------
nosy: +john
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a followup
-
----------
nosy: +john
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a followup
-
----------
nosy: +john
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a followup
-
----------
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
This is a followup
-
----------
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
+ def testFollowupEmptyMessage(self):
+ self.doNewIssue()
+
+ message = cStringIO.StringIO('''Content-Type: text/plain;
+ charset="iso-8859-1"
+From: richard <richard@test>
+To: issue_tracker@your.tracker.email.domain.example
+Message-Id: <followup_dummy_id>
+In-Reply-To: <dummy_test_message_id>
+Subject: [issue1] Testing... [assignedto=mary; nosy=+john]
+
+''')
+ handler = self.instance.MailGW(self.instance, self.db)
+ handler.trapExceptions = 0
+ handler.main(message)
+ l = self.db.issue.get('1', 'nosy')
+ l.sort()
+ self.assertEqual(l, ['3', '4', '5', '6'])
+
+ # should be no file created (ie. no message)
+ assert not os.path.exists(os.environ['SENDMAILDEBUG'])
+
def testNosyRemove(self):
self.doNewIssue()
def testNewUserAuthor(self):
# first without the permission
# heh... just ignore the API for a second ;)
- self.db.security.role['Anonymous'].permissions=[]
+ self.db.security.role['anonymous'].permissions=[]
anonid = self.db.user.lookup('anonymous')
self.db.user.set(anonid, roles='Anonymous')
# now with the permission
p = self.db.security.getPermission('Email Registration')
- self.db.security.role['Anonymous'].permissions=[p]
+ self.db.security.role['anonymous'].permissions=[p]
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
message = cStringIO.StringIO(s)
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
+ def testContentDisposition(self):
+ self.doNewIssue()
+ message = cStringIO.StringIO('''Content-Type: text/plain;
+ charset="iso-8859-1"
+From: mary <mary@test>
+To: issue_tracker@your.tracker.email.domain.example
+Message-Id: <followup_dummy_id>
+In-Reply-To: <dummy_test_message_id>
+Subject: [issue1] Testing...
+Content-Type: multipart/mixed; boundary="bCsyhTFzCvuiizWE"
+Content-Disposition: inline
+
+
+--bCsyhTFzCvuiizWE
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+
+test attachment binary
+
+--bCsyhTFzCvuiizWE
+Content-Type: application/octet-stream
+Content-Disposition: attachment; filename="main.dvi"
+
+xxxxxx
+
+--bCsyhTFzCvuiizWE--
+''')
+ handler = self.instance.MailGW(self.instance, self.db)
+ handler.trapExceptions = 0
+ handler.main(message)
+ messages = self.db.issue.get('1', 'messages')
+ messages.sort()
+ file = self.db.msg.get(messages[-1], 'files')[0]
+ self.assertEqual(self.db.file.get(file, 'name'), 'main.dvi')
+
def testFollowupStupidQuoting(self):
self.doNewIssue()
This is a followup
-
----------
status: unread -> chatting
_______________________________________________________________________
Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
-http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1
+<http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1>
_______________________________________________________________________
''')
self.compareStrings(self.db.msg.get(messageid, 'content'), expect)
+ def testUserLookup(self):
+ i = self.db.user.create(username='user1', address='user1@foo.com')
+ self.assertEqual(uidFromAddress(self.db, ('', 'user1@foo.com'), 0), i)
+ self.assertEqual(uidFromAddress(self.db, ('', 'USER1@foo.com'), 0), i)
+ i = self.db.user.create(username='user2', address='USER2@foo.com')
+ self.assertEqual(uidFromAddress(self.db, ('', 'USER2@foo.com'), 0), i)
+ self.assertEqual(uidFromAddress(self.db, ('', 'user2@foo.com'), 0), i)
+
+ def testUserCreate(self):
+ i = uidFromAddress(self.db, ('', 'user@foo.com'), 1)
+ self.assertNotEqual(uidFromAddress(self.db, ('', 'user@bar.com'), 1), i)
+
def suite():
l = [unittest.makeSuite(MailgwTestCase),
]