class TestEmail(unittest.TestCase): def setUp(self): self.validator = Email() def validate(self, *args): try: return self.validator.to_python(*args) except Invalid as e: return unicode(e) def message(self, message_name, username, domain): email = '@'.join((username, domain)) return self.validator.message( message_name, email, username=username, domain=domain) def test_invalid_email_addresses(self): invalid_usernames = [ # (username, domain, message_name), ('foo\tbar', 'formencode.org', 'badUsername'), ('foo\nbar', 'formencode.org', 'badUsername'), ('test', '', 'noAt'), ('test', 'foobar', 'badDomain'), ('test', 'foobar.5', 'badDomain'), ('test', 'foo..bar.com', 'badDomain'), ('test', '.foo.bar.com', 'badDomain'), ('foo,bar', 'formencode.org', 'badUsername')] for username, domain, message_name in invalid_usernames: email = '@'.join(el for el in (username, domain) if el) error = self.validate(email) expected = self.message(message_name, username, domain) self.assertEqual(error, expected) def test_valid_email_addresses(self): valid_email_addresses = [ # (email address, expected email address), (' [email protected] ', '*****@*****.**'), ('*****@*****.**', '*****@*****.**'), ('*****@*****.**', '*****@*****.**'), ('o*[email protected]', 'o*[email protected]'), ('*****@*****.**', '*****@*****.**'), ('*****@*****.**', '*****@*****.**'), ('[email protected]', '[email protected]'), ('foo{bar}@example.com', 'foo{bar}@example.com'), # examples from RFC 3696 # punting on the difficult and extremely uncommon ones #('"Abc\@def"@example.com', '"Abc\@def"@example.com'), #('"Fred Bloggs"@example.com', '"Fred Bloggs"@example.com'), #('"Joe\\Blow"@example.com', '"Joe\\Blow"@example.com'), #('"Abc@def"@example.com', '"Abc@def"@example.com'), ('customer/[email protected]', 'customer/[email protected]'), ('[email protected]', '[email protected]'), ('!def!xyz%[email protected]', '!def!xyz%[email protected]'), ('*****@*****.**', '*****@*****.**')] for email, expected in valid_email_addresses: self.assertEqual(self.validate(email), expected)
class TestEmail(unittest.TestCase): def setUp(self): self.validator = Email() def validate(self, *args): try: return self.validator.to_python(*args) except Invalid as e: return unicode(e) def message(self, message_name, username, domain): email = '@'.join((username, domain)) return self.validator.message(message_name, email, username=username, domain=domain) def test_invalid_email_addresses(self): invalid_usernames = [ # (username, domain, message_name), ('foo\tbar', 'formencode.org', 'badUsername'), ('foo\nbar', 'formencode.org', 'badUsername'), ('test', '', 'noAt'), ('test', 'foobar', 'badDomain'), ('test', 'foobar.5', 'badDomain'), ('test', 'foo..bar.com', 'badDomain'), ('test', '.foo.bar.com', 'badDomain'), ('foo,bar', 'formencode.org', 'badUsername') ] for username, domain, message_name in invalid_usernames: email = '@'.join(el for el in (username, domain) if el) error = self.validate(email) expected = self.message(message_name, username, domain) self.assertEqual(error, expected) def test_valid_email_addresses(self): valid_email_addresses = [ # (email address, expected email address), (' [email protected] ', '*****@*****.**'), ('*****@*****.**', '*****@*****.**'), ('*****@*****.**', '*****@*****.**'), ('o*[email protected]', 'o*[email protected]'), ('*****@*****.**', '*****@*****.**'), ('*****@*****.**', '*****@*****.**'), ('[email protected]', '[email protected]'), ('foo{bar}@example.com', 'foo{bar}@example.com'), # examples from RFC 3696 # punting on the difficult and extremely uncommon ones #('"Abc\@def"@example.com', '"Abc\@def"@example.com'), #('"Fred Bloggs"@example.com', '"Fred Bloggs"@example.com'), #('"Joe\\Blow"@example.com', '"Joe\\Blow"@example.com'), #('"Abc@def"@example.com', '"Abc@def"@example.com'), ('customer/[email protected]', 'customer/[email protected]'), ('[email protected]', '[email protected]'), ('!def!xyz%[email protected]', '!def!xyz%[email protected]'), ('*****@*****.**', '*****@*****.**') ] for email, expected in valid_email_addresses: self.assertEqual(self.validate(email), expected)