Exemplo n.º 1
0
 def test_fromEmail_always_creates(self):
     """Even when messages are identical, fromEmail creates a new one."""
     email = self.factory.makeEmailMessage()
     orig_message = MessageSet().fromEmail(email.as_string())
     transaction.commit()
     dupe_message = MessageSet().fromEmail(email.as_string())
     self.assertNotEqual(orig_message.id, dupe_message.id)
Exemplo n.º 2
0
 def test_flattenThreads(self):
     """Test MessageSet.flattenThreads."""
     messages = self.createTestMessages()
     message1, message2, message3, message4 = messages
     threads = MessageSet.threadMessages(messages)
     flattened = list(MessageSet.flattenThreads(threads))
     expected = [(0, message1), (1, message2), (2, message4), (1, message3)]
     self.assertEqual(expected, flattened)
Exemplo n.º 3
0
 def test_flattenThreads(self):
     """Test MessageSet.flattenThreads."""
     messages = self.createTestMessages()
     message1, message2, message3, message4 = messages
     threads = MessageSet.threadMessages(messages)
     flattened = list(MessageSet.flattenThreads(threads))
     expected = [(0, message1), (1, message2), (2, message4), (1, message3)]
     self.assertEqual(expected, flattened)
Exemplo n.º 4
0
 def test_fromEmail_restricted_attachments(self):
     """fromEmail creates restricted attachments correctly."""
     msg = self._makeMessageWithAttachment()
     message = MessageSet().fromEmail(msg.as_string(), restricted=True)
     text, diff = message.chunks
     self.assertEqual('review.diff', diff.blob.filename)
     self.assertTrue('review.diff', diff.blob.restricted)
Exemplo n.º 5
0
 def test_fromEmail_decodes_macintosh_encoding(self):
     """"macintosh encoding is equivalent to MacRoman."""
     high_decoded = self.high_characters.decode('macroman')
     email = self.makeEncodedEmail('macintosh', 'macroman')
     message = MessageSet().fromEmail(email.as_string())
     self.assertEqual(high_decoded, message.subject)
     self.assertEqual(high_decoded, message.text_contents)
Exemplo n.º 6
0
 def test_fromEmail_decodes_booga_encoding(self):
     """"'booga' encoding is decoded as latin-1."""
     high_decoded = self.high_characters.decode('latin-1')
     email = self.makeEncodedEmail('booga', 'latin-1')
     message = MessageSet().fromEmail(email.as_string())
     self.assertEqual(high_decoded, message.subject)
     self.assertEqual(high_decoded, message.text_contents)
Exemplo n.º 7
0
 def test_threadMessages(self):
     """Test MessageSet.threadMessages."""
     messages = self.createTestMessages()
     message1, message2, message3, message4 = messages
     threads = MessageSet.threadMessages(messages)
     self.assertEqual([(message1, [(message2, [(message4, [])]),
                                   (message3, [])])], threads)
Exemplo n.º 8
0
 def test_threadMessages(self):
     """Test MessageSet.threadMessages."""
     messages = self.createTestMessages()
     message1, message2, message3, message4 = messages
     threads = MessageSet.threadMessages(messages)
     self.assertEqual(
         [(message1, [(message2, [(message4, [])]), (message3, [])])],
         threads)
 def _makeCommentFromEmailWithAttachment(self, filename, content_type):
     # Make an email message with an attachment, and create a code
     # review comment from it.
     msg = self.factory.makeEmailMessage(
         body='This is the body of the email.',
         attachments=[
             (filename, content_type, 'Attachment body')])
     message = MessageSet().fromEmail(msg.as_string())
     return self.bmp.createCommentFromMessage(message, None, None, msg)
Exemplo n.º 10
0
 def test_oops_in_messagechunk(self):
     oopsid = "OOPS-abcdef1234"
     MessageSet().fromText('foo', "foo %s bar" % oopsid)
     self.store.flush()
     now = datetime.now(tz=utc)
     day = timedelta(days=1)
     self.failUnlessEqual(set([oopsid]),
                          referenced_oops(now - day, now, "product=1", {}))
     self.failUnlessEqual(
         set(), referenced_oops(now + day, now + day, "product=1", {}))
Exemplo n.º 11
0
 def test_process(self):
     """Processing an email creates an appropriate CodeReviewComment."""
     mail = self.factory.makeSignedMessage('<my-id>')
     bmp = self.factory.makeBranchMergeProposal()
     email_addr = bmp.address
     switch_dbuser(config.processmail.dbuser)
     self.assertTrue(self.code_handler.process(
         mail, email_addr, None), "Succeeded, but didn't return True")
     # if the message has not been created, this raises SQLObjectNotFound
     MessageSet().get('<my-id>')
Exemplo n.º 12
0
 def test_fromEmail_restricted_reuploads(self):
     """fromEmail will re-upload the email to the restricted librarian if
     restricted is True."""
     filealias = self.factory.makeLibraryFileAlias()
     transaction.commit()
     email = self.factory.makeEmailMessage()
     message = MessageSet().fromEmail(email.as_string(),
                                      filealias=filealias,
                                      restricted=True)
     self.assertTrue(message.raw.restricted)
     self.assertNotEqual(message.raw.id, filealias.id)
Exemplo n.º 13
0
 def test_parentToChild(self):
     """Test MessageSet._parentToChild."""
     messages = self.createTestMessages()
     message1, message2, message3, message4 = messages
     expected = {
         message1: [message2, message3],
         message2: [message4],
         message3: [], message4: []}
     result, roots = MessageSet._parentToChild(messages)
     self.assertEqual(expected, result)
     self.assertEqual([message1], roots)
Exemplo n.º 14
0
 def test_oops_in_messagesubject(self):
     oopsid = "OOPS-abcdef1234"
     self.factory.makeEmailMessage()
     MessageSet().fromText("Crash with %s" % oopsid, "body")
     self.store.flush()
     now = datetime.now(tz=utc)
     day = timedelta(days=1)
     self.failUnlessEqual(set([oopsid]),
                          referenced_oops(now - day, now, "product=1", {}))
     self.failUnlessEqual(
         set(), referenced_oops(now + day, now + day, "product=1", {}))
Exemplo n.º 15
0
 def test_fromEmail_strips_attachment_paths(self):
     # Build a simple multipart message with a plain text first part
     # and an text/x-diff attachment.
     msg = self._makeMessageWithAttachment(filename='/tmp/foo/review.diff')
     # Now create the message from the MessageSet.
     message = MessageSet().fromEmail(msg.as_string())
     text, diff = message.chunks
     self.assertEqual('This is the body of the email.', text.content)
     self.assertEqual('review.diff', diff.blob.filename)
     self.assertEqual('text/x-diff', diff.blob.mimetype)
     # Need to commit in order to read back out of the librarian.
     transaction.commit()
     self.assertEqual('This is the diff, honest.', diff.blob.read())
Exemplo n.º 16
0
 def test_parentToChild(self):
     """Test MessageSet._parentToChild."""
     messages = self.createTestMessages()
     message1, message2, message3, message4 = messages
     expected = {
         message1: [message2, message3],
         message2: [message4],
         message3: [],
         message4: []
     }
     result, roots = MessageSet._parentToChild(messages)
     self.assertEqual(expected, result)
     self.assertEqual([message1], roots)
 def test_addNotification_without_recipients(self):
     # We can call BugNotificationSet.addNotification() with a empty
     # recipient list.
     #
     # No explicit assertion is necessary in this test -- we just want
     # to be sure that calling BugNotificationSet.addNotification()
     # does not lead to an exception caused by an SQL syntax error for
     # a command that ends with "VALUES ;"
     bug = self.factory.makeBug()
     message = MessageSet().fromText(subject='subject', content='content')
     BugNotificationSet().addNotification(bug=bug,
                                          is_comment=False,
                                          message=message,
                                          recipients=[],
                                          activity=None)
Exemplo n.º 18
0
 def test_decode_utf8(self):
     """Test decode with a known encoding."""
     result = MessageSet.decode(u'\u1234'.encode('utf-8'), 'utf-8')
     self.assertEqual(u'\u1234', result)
Exemplo n.º 19
0
 def test_decode_unknown_ascii(self):
     """Test decode with ascii characters in an unknown encoding."""
     result = MessageSet.decode('abcde', 'booga')
     self.assertEqual(u'abcde', result)
Exemplo n.º 20
0
 def test_decode_unknown_high_characters(self):
     """Test decode with non-ascii characters in an unknown encoding."""
     with self.expectedLog('Treating unknown encoding "booga" as latin-1.'):
         result = MessageSet.decode(self.high_characters, 'booga')
     self.assertEqual(self.high_characters.decode('latin-1'), result)
Exemplo n.º 21
0
 def test_decode_unknown_ascii(self):
     """Test decode with ascii characters in an unknown encoding."""
     result = MessageSet.decode('abcde', 'booga')
     self.assertEqual(u'abcde', result)
Exemplo n.º 22
0
 def test_decode_macintosh(self):
     """Test decode with macintosh encoding."""
     result = MessageSet.decode(self.high_characters, 'macintosh')
     self.assertEqual(self.high_characters.decode('macroman'), result)
Exemplo n.º 23
0
 def test_decode_utf8(self):
     """Test decode with a known encoding."""
     result = MessageSet.decode(u'\u1234'.encode('utf-8'), 'utf-8')
     self.assertEqual(u'\u1234', result)
Exemplo n.º 24
0
 def test_decode_unknown_high_characters(self):
     """Test decode with non-ascii characters in an unknown encoding."""
     with self.expectedLog(
         'Treating unknown encoding "booga" as latin-1.'):
         result = MessageSet.decode(self.high_characters, 'booga')
     self.assertEqual(self.high_characters.decode('latin-1'), result)
Exemplo n.º 25
0
 def test_decode_macintosh(self):
     """Test decode with macintosh encoding."""
     result = MessageSet.decode(self.high_characters, 'macintosh')
     self.assertEqual(self.high_characters.decode('macroman'), result)