def test_small_text_is_preserved(self): # Text parts below the limit are unchanged. message = self.makeMailmanMessage(self.mm_list, self.subscriber_email, 'subject', 'content') moderated_message = LPSize.truncated_message(message, limit=1000) parts = [part for part in moderated_message.walk()] types = [part.get_content_type() for part in parts] self.assertEqual(['multipart/mixed', 'text/plain'], types) self.assertEqual('content', parts[1].get_payload())
def test_small_text_is_preserved(self): # Text parts below the limit are unchanged. message = self.makeMailmanMessage( self.mm_list, self.subscriber_email, 'subject', 'content') moderated_message = LPSize.truncated_message(message, limit=1000) parts = [part for part in moderated_message.walk()] types = [part.get_content_type() for part in parts] self.assertEqual(['multipart/mixed', 'text/plain'], types) self.assertEqual('content', parts[1].get_payload())
def test_large_text_is_truncated(self): # Text parts above the limit are truncated. message = self.makeMailmanMessage(self.mm_list, self.subscriber_email, 'subject', 'content excess') moderated_message = LPSize.truncated_message(message, limit=7) parts = [part for part in moderated_message.walk()] types = [part.get_content_type() for part in parts] self.assertEqual(['multipart/mixed', 'text/plain'], types) self.assertEqual('content\n[truncated for moderation]', parts[1].get_payload())
def test_process_size_under_soft_limit(self): # Any message under 40kb is sent to the list. attachment = MIMEApplication( '\n'.join(['x' * 20] * 1000), 'octet-stream') message = self.makeMailmanMessage( self.mm_list, self.subscriber_email, 'subject', 'content', attachment=attachment) msg_data = {} silence = LPSize.process(self.mm_list, message, msg_data) self.assertEqual(None, silence)
def test_large_text_is_truncated(self): # Text parts above the limit are truncated. message = self.makeMailmanMessage( self.mm_list, self.subscriber_email, 'subject', 'content excess') moderated_message = LPSize.truncated_message(message, limit=7) parts = [part for part in moderated_message.walk()] types = [part.get_content_type() for part in parts] self.assertEqual(['multipart/mixed', 'text/plain'], types) self.assertEqual( 'content\n[truncated for moderation]', parts[1].get_payload())
def test_attchments_are_removed(self): # Plain-text and multipart are preserved, everything else is removed. attachment = MIMEApplication('binary gibberish', 'octet-stream') message = self.makeMailmanMessage( self.mm_list, self.subscriber_email, 'subject', 'content', attachment=attachment) moderated_message = LPSize.truncated_message(message) parts = [part for part in moderated_message.walk()] types = [part.get_content_type() for part in parts] self.assertEqual(['multipart/mixed', 'text/plain'], types)
def test_process_size_under_soft_limit(self): # Any message under 40kb is sent to the list. attachment = MIMEApplication('\n'.join(['x' * 20] * 1000), 'octet-stream') message = self.makeMailmanMessage(self.mm_list, self.subscriber_email, 'subject', 'content', attachment=attachment) msg_data = {} silence = LPSize.process(self.mm_list, message, msg_data) self.assertEqual(None, silence)
def test_attchments_are_removed(self): # Plain-text and multipart are preserved, everything else is removed. attachment = MIMEApplication('binary gibberish', 'octet-stream') message = self.makeMailmanMessage(self.mm_list, self.subscriber_email, 'subject', 'content', attachment=attachment) moderated_message = LPSize.truncated_message(message) parts = [part for part in moderated_message.walk()] types = [part.get_content_type() for part in parts] self.assertEqual(['multipart/mixed', 'text/plain'], types)