Code

fixes to unit tests for recent changes
authorrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Thu, 17 Apr 2003 06:51:44 +0000 (06:51 +0000)
committerrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Thu, 17 Apr 2003 06:51:44 +0000 (06:51 +0000)
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1664 57a73879-2fb5-44c3-a270-3262357dd7e2

CHANGES.txt
roundup/mailgw.py
run_tests
test/test_cgi.py
test/test_init.py
test/test_mailgw.py

index 900ea99880ef891b7041dd4255dcb9668b4d1dae..2a93850b12edca41161e11636d5fa156b3418021 100644 (file)
@@ -63,7 +63,6 @@ Feature:
 - Roundup templates are now distributed much more sanely, allowing for
   3rd-party templates.
 
-
 Fixed:
 - applied unicode patch. All data is stored in utf-8. Incoming messages
   converted from any encoding to utf-8, outgoing messages are encoded 
index 1a5332bb99027c4fed6a2378da084d617b205e0e..66102ebee56a4ffbaed38b8f50e99b20a0857d19 100644 (file)
@@ -73,7 +73,7 @@ are calling the create() method to create a new node). If an auditor raises
 an exception, the original message is bounced back to the sender with the
 explanatory message given in the exception. 
 
-$Id: mailgw.py,v 1.115 2003-04-17 03:37:59 richard Exp $
+$Id: mailgw.py,v 1.116 2003-04-17 06:51:44 richard Exp $
 '''
 
 import string, re, os, mimetools, cStringIO, smtplib, socket, binascii, quopri
@@ -1024,7 +1024,24 @@ def uidFromAddress(db, address, create=1, **user_props):
 
     # couldn't match address or username, so create a new user
     if create:
-        return db.user.create(username=address, address=address,
+        # generate a username
+        if '@' in address:
+            username = address.split('@')[0]
+        else:
+            username = address
+        trying = username
+        n = 0
+        while 1:
+            try:
+                # does this username exist already?
+                db.user.lookup(trying)
+            except KeyError:
+                break
+            n += 1
+            trying = username + str(n)
+
+        # create!
+        return db.user.create(username=trying, address=address,
             realname=realname, roles=db.config.NEW_EMAIL_USER_ROLES,
             password=password.Password(password.generatePassword()),
             **user_props)
index febf5e559e03f7bd4919575b863ca0a5571908a1..0f0445c37a7f78d34c72dd28e42a0a677d288e32 100755 (executable)
--- a/run_tests
+++ b/run_tests
@@ -9,14 +9,7 @@
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
-# $Id: run_tests,v 1.8 2002-09-10 01:07:04 richard Exp $
-
-# make sure we have the htmlbase
-try:
-    from roundup.templates.classic import htmlbase
-except ImportError:
-    import setup
-    setup.buildTemplates()
+# $Id: run_tests,v 1.9 2003-04-17 06:51:44 richard Exp $
 
 from test import go
 import sys
index 85319e32c2d97275d615e7dd4609bad95b4ebbbe..d87f2ec6dc2888b16b618deb98cbe68829c73d91 100644 (file)
@@ -8,7 +8,7 @@
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
-# $Id: test_cgi.py,v 1.14 2003-03-26 06:46:17 richard Exp $
+# $Id: test_cgi.py,v 1.15 2003-04-17 06:51:44 richard Exp $
 
 import unittest, os, shutil, errno, sys, difflib, cgi, re
 
@@ -45,7 +45,7 @@ class FormTestCase(unittest.TestCase):
         except OSError, error:
             if error.errno not in (errno.ENOENT, errno.ESRCH): raise
         # create the instance
-        init.install(self.dirname, 'classic')
+        init.install(self.dirname, 'templates/classic')
         init.write_select_db(self.dirname, 'anydbm')
         init.initialise(self.dirname, 'sekrit')
         # check we can load the package
index b58d0cefa04a993467f1eb5881ff7e57faf48a68..e84c695f230c74db01701b06be15be416fd63b91 100644 (file)
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: test_init.py,v 1.22 2003-03-18 00:50:24 richard Exp $
+# $Id: test_init.py,v 1.23 2003-04-17 06:51:44 richard Exp $
 
 import unittest, os, shutil, errno, imp, sys
 
@@ -43,7 +43,7 @@ class ClassicTestCase(MyTestCase):
         ae = self.assertEqual
 
         # create the instance
-        init.install(self.dirname, 'classic')
+        init.install(self.dirname, 'templates/classic')
         init.write_select_db(self.dirname, self.backend)
         init.initialise(self.dirname, 'sekrit')
 
index 65a1eeafd354c621825d3ee56e3bcd9fd54f944d..138059bafc64a083a9285da2ba8c7c9a83b9b69d 100644 (file)
@@ -8,7 +8,7 @@
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
-# $Id: test_mailgw.py,v 1.43 2003-04-10 05:11:58 richard 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
@@ -69,7 +69,7 @@ class MailgwTestCase(unittest.TestCase, DiffHelper):
         except OSError, error:
             if error.errno not in (errno.ENOENT, errno.ESRCH): raise
         # create the instance
-        init.install(self.dirname, 'classic')
+        init.install(self.dirname, 'templates/classic')
         init.write_select_db(self.dirname, 'anydbm')
         init.initialise(self.dirname, 'sekrit')
         # check we can load the package
@@ -215,7 +215,6 @@ New submission from Bork, Chef <chef@bork.bork.bork>:
 
 This is a test submission of a new issue.
 
-
 ----------
 assignedto: richard
 messages: 1
@@ -272,7 +271,6 @@ Contrary, Mary <mary@test> added the comment:
 
 This is a second followup
 
-
 ----------
 status: unread -> chatting
 _______________________________________________________________________
@@ -321,7 +319,6 @@ richard <richard@test> added the comment:
 
 This is a followup
 
-
 ----------
 assignedto:  -> mary
 nosy: +john, mary
@@ -368,7 +365,6 @@ richard <richard@test> added the comment:
 
 This is a followup
 
-
 ----------
 assignedto:  -> mary
 nosy: +john, mary
@@ -416,7 +412,6 @@ John Doe <john@test> added the comment:
 
 This is a followup
 
-
 ----------
 nosy: +john
 status: unread -> chatting
@@ -465,7 +460,6 @@ richard <richard@test> added the comment:
 
 This is a followup
 
-
 ----------
 nosy: +john
 status: unread -> chatting
@@ -514,7 +508,6 @@ John Doe <john@test> added the comment:
 
 This is a followup
 
-
 ----------
 nosy: +john
 status: unread -> chatting
@@ -562,7 +555,6 @@ John Doe <john@test> added the comment:
 
 This is a followup
 
-
 ----------
 status: unread -> chatting
 _______________________________________________________________________
@@ -610,7 +602,6 @@ richard <richard@test> added the comment:
 
 This is a followup
 
-
 ----------
 status: unread -> chatting
 _______________________________________________________________________
@@ -620,6 +611,28 @@ _______________________________________________________________________
 
 ''')
 
+    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()
 
@@ -854,7 +867,6 @@ richard <richard@test> added the comment:
 
 This is a followup
 
-
 ----------
 status: unread -> chatting
 _______________________________________________________________________
@@ -918,6 +930,10 @@ This is a followup
         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),
     ]