diff --git a/test/test_mailgw.py b/test/test_mailgw.py
index 13cea7acf0eb0e1586d13f29472a210945a6c280..ea5adde2dc93d70213e78737bc0895211c5595fc 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.51 2003-09-07 20:37:33 jlgijsbers Exp $
+# $Id: test_mailgw.py,v 1.57 2003-10-25 22:53:26 richard Exp $
import unittest, tempfile, os, shutil, errno, imp, sys, difflib, rfc822
from cStringIO import StringIO
-from roundup.mailgw import MailGW, Unauthorized, uidFromAddress
+if not os.environ.has_key('SENDMAILDEBUG'):
+ os.environ['SENDMAILDEBUG'] = 'mail-test.log'
+SENDMAILDEBUG = os.environ['SENDMAILDEBUG']
+
+from roundup.mailgw import MailGW, Unauthorized, uidFromAddress, parseContent
from roundup import init, instance, rfc2822
-NEEDS_INSTANCE = 1
class Message(rfc822.Message):
"""String-based Message class with equivalence test."""
except OSError, error:
if error.errno not in (errno.ENOENT, errno.ESRCH): raise
# create the instance
- shutil.copytree('_empty_instance', self.dirname)
+ 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)
+
# and open the database
self.db = self.instance.open('admin')
self.db.user.create(username='Chef', address='chef@bork.bork.bork',
realname='John Doe')
def tearDown(self):
- if os.path.exists(os.environ['SENDMAILDEBUG']):
- os.remove(os.environ['SENDMAILDEBUG'])
+ if os.path.exists(SENDMAILDEBUG):
+ os.remove(SENDMAILDEBUG)
self.db.close()
try:
shutil.rmtree(self.dirname)
except OSError, error:
if error.errno not in (errno.ENOENT, errno.ESRCH): raise
+ def _get_mail(self):
+ f = open(SENDMAILDEBUG)
+ try:
+ return f.read()
+ finally:
+ f.close()
+
def testEmptyMessage(self):
message = StringIO('''Content-Type: text/plain;
charset="iso-8859-1"
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
nodeid = handler.main(message)
- if os.path.exists(os.environ['SENDMAILDEBUG']):
- error = open(os.environ['SENDMAILDEBUG']).read()
- self.assertEqual('no error', error)
+ assert not os.path.exists(SENDMAILDEBUG)
self.assertEqual(self.db.issue.get(nodeid, 'title'), 'Testing...')
def doNewIssue(self):
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
nodeid = handler.main(message)
- if os.path.exists(os.environ['SENDMAILDEBUG']):
- error = open(os.environ['SENDMAILDEBUG']).read()
- self.assertEqual('no error', error)
+ assert not os.path.exists(SENDMAILDEBUG)
l = self.db.issue.get(nodeid, 'nosy')
l.sort()
self.assertEqual(l, ['3', '4'])
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
nodeid = handler.main(message)
- if os.path.exists(os.environ['SENDMAILDEBUG']):
- error = open(os.environ['SENDMAILDEBUG']).read()
- self.assertEqual('no error', error)
+ assert not os.path.exists(SENDMAILDEBUG)
l = self.db.issue.get(nodeid, 'nosy')
l.sort()
self.assertEqual(l, ['3', '4'])
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
handler.main(message)
- if os.path.exists(os.environ['SENDMAILDEBUG']):
- error = open(os.environ['SENDMAILDEBUG']).read()
- self.assertEqual('no error', error)
+ assert not os.path.exists(SENDMAILDEBUG)
self.assertEqual(userlist, self.db.user.list(),
"user created when it shouldn't have been")
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
handler.main(message)
- if os.path.exists(os.environ['SENDMAILDEBUG']):
- error = open(os.environ['SENDMAILDEBUG']).read()
- self.assertEqual('no error', error)
+ assert not os.path.exists(SENDMAILDEBUG)
def testNewIssueAuthMsg(self):
message = StringIO('''Content-Type: text/plain;
self.db.config.MESSAGES_TO_AUTHOR = 'yes'
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, mary@test, richard@test
Content-Type: text/plain; charset=utf-8
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, richard@test
Content-Type: text/plain; charset=utf-8
l.sort()
self.assertEqual(l, ['3', '4', '5', '6'])
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, john@test, mary@test
Content-Type: text/plain; charset=utf-8
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, john@test, mary@test
Content-Type: text/plain; charset=utf-8
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, richard@test
Content-Type: text/plain; charset=utf-8
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork
Content-Type: text/plain; charset=utf-8
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, john@test, richard@test
Content-Type: text/plain; charset=utf-8
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, richard@test
Content-Type: text/plain; charset=utf-8
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork
Content-Type: text/plain; charset=utf-8
self.assertEqual(l, ['3', '4', '5', '6'])
# should be no file created (ie. no message)
- assert not os.path.exists(os.environ['SENDMAILDEBUG'])
+ assert not os.path.exists(SENDMAILDEBUG)
def testNosyRemove(self):
self.doNewIssue()
self.assertEqual(l, ['3'])
# NO NOSY MESSAGE SHOULD BE SENT!
- self.assert_(not os.path.exists(os.environ['SENDMAILDEBUG']))
+ assert not os.path.exists(SENDMAILDEBUG)
def testNewUserAuthor(self):
# first without the permission
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, richard@test
Content-Type: text/plain; charset=utf-8
handler = self.instance.MailGW(self.instance, self.db)
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork, richard@test
Content-Type: text/plain; charset=utf-8
handler.trapExceptions = 0
handler.main(message)
- self.compareMessages(open(os.environ['SENDMAILDEBUG']).read(),
+ self.compareMessages(self._get_mail(),
'''FROM: roundup-admin@your.tracker.email.domain.example
TO: chef@bork.bork.bork
Content-Type: text/plain; charset=utf-8
self.assertEqual(uidFromAddress(self.db, ('', 'USER2@foo.com'), 0), i)
self.assertEqual(uidFromAddress(self.db, ('', 'user2@foo.com'), 0), i)
+ def testUserAlternateLookup(self):
+ i = self.db.user.create(username='user1', address='user1@foo.com',
+ alternate_addresses='user1@bar.com')
+ self.assertEqual(uidFromAddress(self.db, ('', 'user1@bar.com'), 0), i)
+ self.assertEqual(uidFromAddress(self.db, ('', 'USER1@bar.com'), 0), i)
+
def testUserCreate(self):
i = uidFromAddress(self.db, ('', 'user@foo.com'), 1)
self.assertNotEqual(uidFromAddress(self.db, ('', 'user@bar.com'), 1), i)
handler.main(message)
self.db.user.lookup('johannes')
-
-def suite():
- l = [unittest.makeSuite(MailgwTestCase),
- ]
- return unittest.TestSuite(l)
+def test_suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(MailgwTestCase))
+ return suite
+
+if __name__ == '__main__':
+ runner = unittest.TextTestRunner()
+ unittest.main(testRunner=runner)
# vim: set filetype=python ts=4 sw=4 et si