diff --git a/test/test_mailgw.py b/test/test_mailgw.py
index 7c11befbf30839271e887e3404e193f56a08ff32..0cd78d486ac1e41e849dc649a093847239827679 100644 (file)
--- a/test/test_mailgw.py
+++ b/test/test_mailgw.py
self.assertEqual(self.db.issue.get(nodeid, 'status'), '3')
self.assertEqual(self.db.issue.get(nodeid, 'priority'), '1')
+ def testOptionClass(self):
+ nodeid = self._handle_mail('''Content-Type: text/plain;
+ charset="iso-8859-1"
+From: Chef <chef@bork.bork.bork>
+To: issue_tracker@your.tracker.email.domain.example
+Message-Id: <dummy_test_message_id>
+Reply-To: chef@bork.bork.bork
+Subject: [issue] Testing... [status=chatting;priority=critical]
+
+Hi there!
+''', (('-c', 'issue'),))
+ self.assertEqual(self.db.issue.get(nodeid, 'title'), 'Testing...')
+ self.assertEqual(self.db.issue.get(nodeid, 'status'), '3')
+ self.assertEqual(self.db.issue.get(nodeid, 'priority'), '1')
+
def doNewIssue(self):
nodeid = self._handle_mail('''Content-Type: text/plain;
charset="iso-8859-1"
self.assertEqual(f.content, content [n])
self.assertEqual(msg.content, 'test attachment second text/plain')
+ def testMultipartSeveralAttachmentMessages(self):
+ self.doNewIssue()
+ self._handle_mail(self.multipart_msg)
+ messages = self.db.issue.get('1', 'messages')
+ messages.sort()
+ self.assertEqual(messages[-1], '2')
+ msg = self.db.msg.getnode (messages[-1])
+ self.assertEqual(len(msg.files), 5)
+ issue = self.db.issue.getnode ('1')
+ self.assertEqual(len(issue.files), 5)
+ names = {0 : 'first.dvi', 4 : 'second.dvi'}
+ content = {3 : 'test attachment third text/plain\n',
+ 4 : 'Just a test\n'}
+ for n, id in enumerate (msg.files):
+ f = self.db.file.getnode (id)
+ self.assertEqual(f.name, names.get (n, 'unnamed'))
+ if n in content :
+ self.assertEqual(f.content, content [n])
+ self.assertEqual(msg.content, 'test attachment second text/plain')
+ self.assertEqual(msg.files, ['1', '2', '3', '4', '5'])
+ self.assertEqual(issue.files, ['1', '2', '3', '4', '5'])
+
+ self._handle_mail(self.multipart_msg)
+ issue = self.db.issue.getnode ('1')
+ self.assertEqual(len(issue.files), 10)
+ messages = self.db.issue.get('1', 'messages')
+ messages.sort()
+ self.assertEqual(messages[-1], '3')
+ msg = self.db.msg.getnode (messages[-1])
+ self.assertEqual(issue.files, [str(i+1) for i in range(10)])
+ self.assertEqual(msg.files, ['6', '7', '8', '9', '10'])
+
+ def testMultipartKeepFiles(self):
+ self.doNewIssue()
+ self._handle_mail(self.multipart_msg)
+ messages = self.db.issue.get('1', 'messages')
+ messages.sort()
+ msg = self.db.msg.getnode (messages[-1])
+ self.assertEqual(len(msg.files), 5)
+ issue = self.db.issue.getnode ('1')
+ self.assertEqual(len(issue.files), 5)
+ names = {0 : 'first.dvi', 4 : 'second.dvi'}
+ content = {3 : 'test attachment third text/plain\n',
+ 4 : 'Just a test\n'}
+ for n, id in enumerate (msg.files):
+ f = self.db.file.getnode (id)
+ self.assertEqual(f.name, names.get (n, 'unnamed'))
+ if n in content :
+ self.assertEqual(f.content, content [n])
+ self.assertEqual(msg.content, 'test attachment second text/plain')
+ self._handle_mail('''From: mary <mary@test.test>
+To: issue_tracker@your.tracker.email.domain.example
+Message-Id: <followup_dummy_id2>
+In-Reply-To: <dummy_test_message_id>
+Subject: [issue1] Testing...
+
+This ist a message without attachment
+''')
+ issue = self.db.issue.getnode ('1')
+ self.assertEqual(len(issue.files), 5)
+ self.assertEqual(issue.files, ['1', '2', '3', '4', '5'])
+
def testMultipartDropAlternatives(self):
self.doNewIssue()
self.db.config.MAILGW_IGNORE_ALTERNATIVES = True
messages = self.db.issue.get('1', 'messages')
messages.sort()
msg = self.db.msg.getnode (messages[-1])
- assert(len(msg.files) == 2)
+ self.assertEqual(len(msg.files), 2)
names = {1 : 'second.dvi'}
content = {0 : 'test attachment third text/plain\n',
1 : 'Just a test\n'}
messages = self.db.issue.get('1', 'messages')
messages.sort()
msg = self.db.msg.getnode (messages[-1])
- assert(len(msg.files) == 1)
+ self.assertEqual(len(msg.files), 1)
name = 'unnamed'
content = '<html>' + c + '</html>\n'
for n, id in enumerate (msg.files):
messages = self.db.issue.get('1', 'messages')
messages.sort()
msg = self.db.msg.getnode (messages[-1])
- assert(len(msg.files) == 1)
+ self.assertEqual(len(msg.files), 1)
name = 'unnamed'
content = '<html>' + c + '</html>\n'
for n, id in enumerate (msg.files):
messages = self.db.issue.get('1', 'messages')
messages.sort()
msg = self.db.msg.getnode (messages[-1])
- assert(len(msg.files) == 1)
+ self.assertEqual(len(msg.files), 1)
name = 'unnamed'
content = '<html>' + c + '</html>\n'
for n, id in enumerate (msg.files):
messages = self.db.issue.get('1', 'messages')
messages.sort()
msg = self.db.msg.getnode (messages[-1])
- assert(len(msg.files) == 1)
+ self.assertEqual(len(msg.files), 1)
name = 'unnamed'
content = '<html>' + c + '</html>\n'
for n, id in enumerate (msg.files):
messages = self.db.issue.get('1', 'messages')
messages.sort()
msg = self.db.msg.getnode (messages[-1])
- assert(len(msg.files) == 1)
+ self.assertEqual(len(msg.files), 1)
name = "Fwd: Original email subject.eml"
for n, id in enumerate (msg.files):
f = self.db.file.getnode (id)
name = self.db.user.get(new, 'realname')
self.assertEquals(name, 'H€llo')
+ def testNewUserAuthorMixedEncodedName(self):
+ l = set(self.db.user.list())
+ # From: name has Euro symbol in it
+ message = '''Content-Type: text/plain;
+ charset="iso-8859-1"
+From: Firstname =?utf-8?b?w6TDtsOf?= Last <fubar@bork.bork.bork>
+To: issue_tracker@your.tracker.email.domain.example
+Message-Id: <dummy_test_message_id>
+Subject: [issue] Test =?utf-8?b?w4TDlsOc?= umlauts
+ X1
+ X2
+
+This is a test submission of a new issue.
+'''
+ p = [
+ self.db.security.getPermission('Register', 'user'),
+ self.db.security.getPermission('Email Access', None),
+ self.db.security.getPermission('Create', 'issue'),
+ self.db.security.getPermission('Create', 'msg'),
+ ]
+ self.db.security.role['anonymous'].permissions = p
+ self._handle_mail(message)
+ title = self.db.issue.get('1', 'title')
+ self.assertEquals(title, 'Test \xc3\x84\xc3\x96\xc3\x9c umlauts X1 X2')
+ m = set(self.db.user.list())
+ new = list(m - l)[0]
+ name = self.db.user.get(new, 'realname')
+ self.assertEquals(name, 'Firstname \xc3\xa4\xc3\xb6\xc3\x9f Last')
+
def testUnknownUser(self):
l = set(self.db.user.list())
message = '''Content-Type: text/plain;