def message_headers_transform_test(): """ Header transformation is reflected in the underlying Python standard library email object. """ # Given orig = create.from_string(ENCLOSED) # When orig.headers.transform(lambda k, v: ('X-{}'.format(k), v[:1])) restored = create.from_python(orig.to_python_message()) # Then eq_([('X-Delivered-To', 'b'), ('X-Received', 'b'), ('X-Received', 'b'), ('X-Return-Path', '<'), ('X-Received', 'f'), ('X-Received-Spf', 'p'), ('X-Authentication-Results', 'm'), ('X-Dkim-Signature', 'a'), ('X-Domainkey-Signature', 'a'), ('X-Content-Type', ('multipart/mixed',)), ('X-Mime-Version', '1'), ('X-Received', 'b'), ('X-Received', 'f'), ('X-Message-Id', '<'), ('X-Date', 'S'), ('X-From', 'B'), ('X-User-Agent', 'M'), ('X-To', u'"'), ('X-Subject', 'W'), ('X-X-Example-Sid', 'W')], restored.headers.items())
def message_headers_test(): message = create.from_python(email.message_from_string(ENCLOSED)) ok_(message.headers) eq_(20, len(message.headers)) # iterate a little bit for key, val in message.headers: ok_(key) ok_(val) for key, val in message.headers.items(): ok_(key) ok_(val) for key, val in message.headers.iteritems(): ok_(key) ok_(val) message.headers.prepend("Received", "Hi") message.headers.add("Received", "Yo") eq_(22, len(message.headers.keys())) ok_(message.headers.get("Received")) ok_(message.headers.getall("Received")) eq_("a", message.headers.get("Received-No", "a")) ok_(str(message.headers))
def message_headers_transform_test(): """ Header transformation is reflected in the underlying Python standard library email object. """ # Given orig = create.from_string(ENCLOSED) # When orig.headers.transform(lambda k, v: ('X-{}'.format(k), v[:1])) restored = create.from_python(orig.to_python_message()) # Then eq_([('X-Delivered-To', 'b'), ('X-Received', 'b'), ('X-Received', 'b'), ('X-Return-Path', '<'), ('X-Received', 'f'), ('X-Received-Spf', 'p'), ('X-Authentication-Results', 'm'), ('X-Dkim-Signature', 'a'), ('X-Domainkey-Signature', 'a'), ('X-Content-Type', 'm'), ('X-Mime-Version', '1'), ('X-Received', 'b'), ('X-Received', 'f'), ('X-Message-Id', '<'), ('X-Date', 'S'), ('X-From', 'B'), ('X-User-Agent', 'M'), ('X-To', u'"'), ('X-Subject', 'W'), ('X-X-Example-Sid', 'W')], restored.headers.items())
def references_test(): # Given message = create.from_python( email.message_from_string(MULTI_RECEIVED_HEADERS)) # When/Then eq_({'[email protected]', '*****@*****.**'}, set(message.references))
def bad_python_test(): message = create.from_python( message_from_string("Content-Type:multipart/broken")) ok_(message.to_string()) with closing(StringIO()) as out: message.to_stream(out) ok_(out.getvalue()) list(message.walk()) message.remove_headers() assert_false(message.is_attachment()) assert_false(message.is_inline()) assert_false(message.is_delivery_notification()) assert_false(message.is_bounce()) ok_(message.to_python_message()) eq_(None, message.get_attached_message()) ok_(str(message))
def message_headers_append_test(): """ `prepend` and `add` add a header to the beginning and the end of the header list respectively. """ # Given orig = create.from_string(ENCLOSED) # When orig.headers.prepend('foo-bar', 'hello') orig.headers.add('blah', 'kitty') restored = create.from_python(orig.to_python_message()) # Then eq_(('Foo-Bar', 'hello'), restored.headers.items()[0]) eq_(('Blah', 'kitty'), restored.headers.items()[-1])
def message_headers_append_test(): """ `prepend` and `add` both insert a header at the beginning and the end of the header list. """ # Given orig = create.from_string(ENCLOSED) # When orig.headers.prepend('foo-bar', 'hello') orig.headers.add('blah', 'kitty') restored = create.from_python(orig.to_python_message()) # Then eq_(('Blah', 'kitty'), restored.headers.items()[0]) eq_(('Foo-Bar', 'hello'), restored.headers.items()[1])
def message_from_python_test(): message = create.from_python(email.message_from_string(ENCLOSED)) eq_(2, len(message.parts)) eq_('multipart/alternative', message.parts[1].enclosed.content_type) eq_('multipart/mixed', message.content_type) assert_false(message.body) message.headers['Sasha'] = 'Hello!' message.remove_headers("Subject", "Nonexisting") message.parts[1].enclosed.headers['Yo'] = u'Man' ok_(message.to_string()) ok_(str(message)) ok_(str(message.parts[0])) m = message.get_attached_message() eq_('multipart/alternative', str(m.content_type)) eq_('Thanks!', m.headers['Subject'])
def message_headers_mutation_test(): """ FallbackMimePart headers match MimePart headers exactly for the same input. """ # Given orig = create.from_string(ENCLOSED) eq_('Wow', orig.headers['Subject']) eq_(ContentType('multipart', 'mixed', {'boundary': u'===============6195527458677812340=='}), orig.headers['Content-Type']) # When del orig.headers['Subject'] orig.headers['Content-Type'] = ContentType('text', 'foo') orig.headers.prepend('foo-bar', 'hello') orig.headers.add('blah', 'kitty') restored = create.from_python(orig.to_python_message()) # Then ok_('Subject' not in restored.headers) eq_('', restored.subject) eq_(ContentType('text', 'foo'), restored.headers['Content-Type'])