def test_assign_list_of_named_addresses(self): addresses = [('Test User 1', '*****@*****.**'), ('Test User 2', '*****@*****.**')] self.addresses = addresses string_addresses = [unicode(Address(*value)) for value in addresses] assert ', '.join(string_addresses) == unicode(self.addresses) assert string_addresses == self.addresses
def test_validation_accepts_uncommon_local_parts(self): Address('*****@*****.**') # This address caused 100% CPU load for 50s in Python's (2.5.2) re # module on Fedora Linux 10 (AMD x2 4200). Address('*****@*****.**') Address('customer/[email protected]') Address('[email protected] ') Address('!def!xyz%[email protected] ') Address('*****@*****.**') Address('!$&*-=^`|~#%\'+/?_{}@example.com')
def test_initialization_with_tuple(self): name = 'Foo' emailaddress = '*****@*****.**' address = Address((name, emailaddress)) assert '%s <%s>' % (name, emailaddress) == unicode(address)
def test_compare_bytestring(self): addr = Address('*****@*****.**') eq_(addr, b'*****@*****.**')
def test_address_from_addresslist_limit_2(self): email = '*****@*****.**' with pytest.raises(ValueError): Address(AddressList([Address(email), Address(email)]))
def test_compare_othertype(self): addr = Address('*****@*****.**') with pytest.raises(NotImplementedError): addr != 123
def test_compare_othertype(self): addr = Address('*****@*****.**') addr != 123
def test_compare_address(self): addr1 = Address('*****@*****.**') addr2 = Address(' [email protected] ') assert addr1 == addr2
def test_compare_bytestring(self): addr = Address('*****@*****.**') assert addr == b'*****@*****.**'
def test_validation_accepts_domain_without_tld(self): assert Address('user@company') == 'user@company'
def test_validation_rejects_local_parts_starting_or_ending_with_dot(self): with pytest.raises(ValueError): Address('*****@*****.**') with pytest.raises(ValueError): Address('*****@*****.**')
def test_validation_accepts_multilevel_domains(self): Address('*****@*****.**') Address('*****@*****.**') Address('*****@*****.**')
def test_punycode(self): addr = Address('Foo', 'foo@exámple.test') assert bytes(addr) == b'Foo <*****@*****.**>'
def test_revalidation(self): addr = Address('*****@*****.**') assert addr.valid == True
def test_repr(self): addr = Address('*****@*****.**') eq_(repr(addr), 'Address("*****@*****.**")')
def test_len(self): addr = Address('*****@*****.**') eq_(len(addr), len('*****@*****.**'))
def test_initialization_with_named_string(self): emailaddress = 'My Name <*****@*****.**>' address = Address(emailaddress) assert unicode(address) == emailaddress
def test_validation_rejects_double_dot(self): with pytest.raises(ValueError): Address('*****@*****.**')
def test_invalid_initialization(self): with pytest.raises(TypeError): Address(123)
def test_bytestring(self): addr = Address('Foo <foo@exámple.test>'.encode('utf-8')) assert bytes(addr) == b'Foo <*****@*****.**>'
def test_compare_unicode(self): addr = Address('*****@*****.**') assert addr == '*****@*****.**'
def test_repr(self): addr = Address('*****@*****.**') assert repr(addr) == 'Address("*****@*****.**")'
def test_compare_tuple(self): addr = Address('foo', '*****@*****.**') assert addr == ('foo', '*****@*****.**')
def test_validation_rejects_addresses_without_at(self): # TODO: This may be actually a valid input - some mail systems allow to # use only the local part which will be qualified by the MTA with pytest.raises(ValueError): Address('baduser.example.com')
def test_len(self): addr = Address('*****@*****.**') assert len(addr), len('*****@*****.**')
def test_compare_tuple(self): addr = Address('foo', '*****@*****.**') eq_(addr, ('foo', '*****@*****.**'))
def test_validation_truncates_at_second_at_character(self): # This is basically due to Python's parseaddr behavior. assert 'bad@user' == Address('bad@[email protected]')
def test_address_from_addresslist(self): email = '*****@*****.**' addr = Address(AddressList([Address(email)])) assert unicode(addr) == email
def test_address_from_addresslist_limit_0(self): with pytest.raises(ValueError): Address(AddressList())
def test_compare_unicode(self): addr = Address('*****@*****.**') eq_(addr, '*****@*****.**')