def test_issue141_one_last_digest(self): # Currently DigestMode.summary_digests are equivalent to mime_digests. self._mlist.send_welcome_message = False bart = subscribe(self._mlist, 'Bart') self._mlist.send_one_last_digest_to( bart.address, DeliveryMode.summary_digests) make_digest_messages(self._mlist) # There should be one message in the outgoing queue, destined for # Bart, formatted as a MIME digest. items = get_queue_messages('virgin') self.assertEqual(len(items), 1) # Bart is the only recipient. self.assertEqual(items[0].msgdata['recipients'], set(['*****@*****.**'])) # The message is a MIME digest, with the structure we expect. fp = StringIO() structure(items[0].msg, fp) self.assertMultiLineEqual(fp.getvalue(), """\ multipart/mixed text/plain text/plain message/rfc822 text/plain text/plain """)
def test_issue141_one_last_digest(self): # Currently DigestMode.summary_digests are equivalent to mime_digests. # Also tests issue 234. self._mlist.send_welcome_message = False bart = subscribe(self._mlist, 'Bart') self._mlist.send_one_last_digest_to(bart.address, DeliveryMode.summary_digests) make_digest_messages(self._mlist) # There should be one message in the outgoing queue, destined for # Bart, formatted as a MIME digest. items = get_queue_messages('virgin', expected_count=1) # Bart is the only recipient. self.assertEqual(items[0].msgdata['recipients'], set(['*****@*****.**'])) # The message is a MIME digest, with the structure we expect. fp = StringIO() structure(items[0].msg, fp) self.assertMultiLineEqual( fp.getvalue(), """\ multipart/mixed text/plain text/plain multipart/digest message/rfc822 text/plain text/plain """)
def test_mime_digest_format(self): # Make sure that the format of the MIME digest is as expected. self._mlist.digest_size_threshold = 0.6 self._mlist.volume = 1 self._mlist.next_digest_number = 1 self._mlist.send_welcome_message = False # Subscribe some users receiving digests. anne = subscribe(self._mlist, 'Anne') anne.preferences.delivery_mode = DeliveryMode.mime_digests bart = subscribe(self._mlist, 'Bart') bart.preferences.delivery_mode = DeliveryMode.plaintext_digests # Fill the digest. process = config.handlers['to-digest'].process size = 0 for i in range(1, 5): text = Template("""\ From: [email protected] To: [email protected] Subject: Test message $i List-Post: <*****@*****.**> Here is message $i """).substitute(i=i) msg = message_from_string(text) process(self._mlist, msg, {}) size += len(text) if size >= self._mlist.digest_size_threshold * 1024: break # Run the digest runner to create the MIME and RFC 1153 digests. runner = make_testable_runner(DigestRunner) runner.run() items = get_queue_messages('virgin', expected_count=2) # Find the MIME one. mime_digest = None for item in items: if item.msg.is_multipart(): assert mime_digest is None, 'We got two MIME digests' mime_digest = item.msg fp = StringIO() # Verify the structure is what we expect. structure(mime_digest, fp) self.assertMultiLineEqual( fp.getvalue(), """\ multipart/mixed text/plain text/plain multipart/digest message/rfc822 text/plain message/rfc822 text/plain message/rfc822 text/plain message/rfc822 text/plain text/plain """)
def test_mime_digest_format(self): # Make sure that the format of the MIME digest is as expected. self._mlist.digest_size_threshold = 0.6 self._mlist.volume = 1 self._mlist.next_digest_number = 1 self._mlist.send_welcome_message = False # Subscribe some users receiving digests. anne = subscribe(self._mlist, 'Anne') anne.preferences.delivery_mode = DeliveryMode.mime_digests bart = subscribe(self._mlist, 'Bart') bart.preferences.delivery_mode = DeliveryMode.plaintext_digests # Fill the digest. process = config.handlers['to-digest'].process size = 0 for i in range(1, 5): text = Template("""\ From: [email protected] To: [email protected] Subject: Test message $i List-Post: <*****@*****.**> Here is message $i """).substitute(i=i) msg = message_from_string(text) process(self._mlist, msg, {}) size += len(text) if size >= self._mlist.digest_size_threshold * 1024: break # Run the digest runner to create the MIME and RFC 1153 digests. runner = make_testable_runner(DigestRunner) runner.run() items = get_queue_messages('virgin') self.assertEqual(len(items), 2) # Find the MIME one. mime_digest = None for item in items: if item.msg.is_multipart(): assert mime_digest is None, 'We got two MIME digests' mime_digest = item.msg fp = StringIO() # Verify the structure is what we expect. structure(mime_digest, fp) self.assertMultiLineEqual(fp.getvalue(), """\ multipart/mixed text/plain text/plain message/rfc822 text/plain message/rfc822 text/plain message/rfc822 text/plain message/rfc822 text/plain text/plain """)