Skip to content

Commit

Permalink
Merge pull request #178 from krazybean/AN-66
Browse files Browse the repository at this point in the history
AN-66 - adding dual aol pattern for verizion.net
  • Loading branch information
krazybean authored Jan 4, 2018
2 parents 8462ca4 + d9cb6c4 commit 13e54f1
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
12 changes: 12 additions & 0 deletions flanker/addresslib/plugins/aol.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,23 @@
\_
''', re.MULTILINE | re.VERBOSE)

AOL_UNMANAGED = ['verizon.net']


def validate(email_addr):
# Setup for handling EmailAddress type instead of literal string
localpart = email_addr.mailbox
unmanaged = unmanaged_email(email_addr.hostname)

# check string exists and not empty
if not localpart:
return False

# Unmanaged is now a list of providers whom patterns/rules are unknown
# thus any hostname part matching will return without rule adherence.
if unmanaged:
return True

# length check
l = len(localpart)
if l < 3 or l > 32:
Expand Down Expand Up @@ -90,3 +98,7 @@ def _validate(localpart):
return False

return True


def unmanaged_email(hostname):
return hostname in AOL_UNMANAGED
41 changes: 41 additions & 0 deletions tests/addresslib/validator_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,3 +293,44 @@ def test_mx_yahoo_manage_flag_toggle():
addr_obj = address.parse(mailbox)
managed = validate.yahoo.managed_email(addr_obj.hostname)
assert_equal(managed, False)


@patch('flanker.addresslib.validate.connect_to_mail_exchanger')
@patch('flanker.addresslib.validate.lookup_domain')
def test_mx_aol_dual_lookup(ld, cmx):
ld.return_value = ['mailin-01.mx.aol.com', 'mailin-02.mx.aol.com']
cmx.return_value = 'mailin-03.mx.aol.com'

# Invalidate managed email response out of pattern
mailbox = '[email protected]'
addr = address.validate_address(mailbox)
assert_equal(type(addr), type(None))

# Same test but with validate_list
addr = address.validate_list([mailbox])
expected = 'flanker.addresslib.address:'
assert_equal(addr, [])

# Allow AOL MX unmanaged mailboxes to pass remaining patterns
mailbox = '[email protected]'
addr = address.validate_address(mailbox)
assert_equal(addr, mailbox)

# Same test but with validate_list
expected = 'flanker.addresslib.address:'
addr = address.validate_list([mailbox])
assert_equal(addr, mailbox)


def test_mx_aol_manage_flag_toggle():
# Just checking if the domain provided from the sub is managed
mailbox = '[email protected]'
addr_obj = address.parse(mailbox)
unmanaged = validate.aol.unmanaged_email(addr_obj.hostname)
assert_equal(unmanaged, False)

# Same but inversed, unmanaged aol mailbox
mailbox = '[email protected]'
addr_obj = address.parse(mailbox)
unmanaged = validate.aol.unmanaged_email(addr_obj.hostname)
assert_equal(unmanaged, True)

0 comments on commit 13e54f1

Please sign in to comment.