Esempio n. 1
0
def test_provider_resolution():
    assert provider_from_address('*****@*****.**') == 'unknown'
    assert provider_from_address('*****@*****.**') == 'unknown'
    assert provider_from_address('*****@*****.**') == 'gmail'
    assert provider_from_address('*****@*****.**') == 'yahoo'
    assert provider_from_address('*****@*****.**') == 'yahoo'
    assert provider_from_address('*****@*****.**') == 'outlook'
    assert provider_from_address('*****@*****.**') == 'outlook'
    assert provider_from_address('*****@*****.**') == 'aol'
    assert provider_from_address('*****@*****.**') == 'aol'
    assert provider_from_address('*****@*****.**') == 'aol'
    assert provider_from_address('*****@*****.**') == 'eas'
    assert provider_from_address('*****@*****.**') == 'fastmail'
    assert provider_from_address('*****@*****.**') == 'fastmail'
    assert provider_from_address('*****@*****.**') == 'fastmail'
    assert provider_from_address('*****@*****.**') == 'icloud'
    assert provider_from_address('*****@*****.**') == 'icloud'
    assert provider_from_address('*****@*****.**') == 'gmx'
    assert provider_from_address('*****@*****.**') == 'gandi'
    assert provider_from_address('*****@*****.**') == 'gandi'
    assert provider_from_address('*****@*****.**') == 'outlook'
    assert provider_from_address('*****@*****.**') == 'gmail'
    assert provider_from_address('*****@*****.**') == 'gmail'
    assert provider_from_address('*****@*****.**') == 'eas'
    assert provider_from_address('*****@*****.**') == 'eas'
    with pytest.raises(InvalidEmailAddressError):
        provider_from_address('notanemail')
    with pytest.raises(InvalidEmailAddressError):
        provider_from_address('not@anemail')
    with pytest.raises(InvalidEmailAddressError):
        provider_from_address('notanemail.com')

    try:
        # Registering a new provider
        assert provider_from_address('*****@*****.**') == 'unknown'
        providers.register_info('example', {
            "type": "generic",
            "imap": ("mail.example.net", 993),
            "smtp": ("smtp.example.net", 587),
            "auth": "password",
            "domains": ["example.com"],
            "mx_servers": ["mx.example.net"]
        })
        assert provider_from_address('*****@*****.**') == 'example'

        # Registering some filters
        def aol_filter(info, provider, email):
            info['domains'].append('example.net')

        def wildcard_filter(info, provider, email):
            if provider == 'zimbra':
                info['domains'].append('example.org')

        assert provider_from_address('*****@*****.**') == 'unknown'
        assert provider_from_address('*****@*****.**') == 'unknown'
        providers.register_info_filter('aol', aol_filter)
        providers.register_info_filter(None, wildcard_filter)
        assert provider_from_address('*****@*****.**') == 'aol'
        assert provider_from_address('*****@*****.**') == 'zimbra'

        # Modifying provider info based on the email address
        def email_address_filter(info, provider, email):
            if email == '*****@*****.**':
                info['imap'] = ('imap2.example.com', 994)
        orig_imap = tuple(providers['yahoo']['imap'])

        assert (providers.lookup_info('yahoo', '*****@*****.**')['imap'] ==
                orig_imap)
        assert (providers.lookup_info('yahoo', '*****@*****.**')['imap'] ==
                orig_imap)
        providers.register_info_filter(None, email_address_filter)
        assert (providers.lookup_info('yahoo', '*****@*****.**')['imap'] ==
                ('imap2.example.com', 994))
        assert (providers.lookup_info('yahoo', '*****@*****.**')['imap'] ==
                orig_imap)
    finally:
        providers.reset()
def test_provider_resolution():
    assert provider_from_address('*****@*****.**') == 'unknown'
    assert provider_from_address('*****@*****.**') == 'unknown'
    assert provider_from_address('*****@*****.**') == 'gmail'
    assert provider_from_address('*****@*****.**') == 'yahoo'
    assert provider_from_address('*****@*****.**') == 'yahoo'
    assert provider_from_address('*****@*****.**') == 'outlook'
    assert provider_from_address('*****@*****.**') == 'outlook'
    assert provider_from_address('*****@*****.**') == 'aol'
    assert provider_from_address('*****@*****.**') == 'aol'
    assert provider_from_address('*****@*****.**') == 'aol'
    assert provider_from_address('*****@*****.**') == 'eas'
    assert provider_from_address('*****@*****.**') == 'fastmail'
    assert provider_from_address('*****@*****.**') == 'fastmail'
    assert provider_from_address('*****@*****.**') == 'fastmail'
    assert provider_from_address('*****@*****.**') == 'icloud'
    assert provider_from_address('*****@*****.**') == 'icloud'
    assert provider_from_address('*****@*****.**') == 'gmx'
    assert provider_from_address('*****@*****.**') == 'gandi'
    assert provider_from_address('*****@*****.**') == 'gandi'
    assert provider_from_address('*****@*****.**') == 'eas'
    assert provider_from_address('*****@*****.**') == 'gmail'
    assert provider_from_address('*****@*****.**') == 'gmail'
    assert provider_from_address('*****@*****.**') == 'eas'
    assert provider_from_address('*****@*****.**') == 'eas'
    assert provider_from_address('*****@*****.**') == 'unknown'

    with pytest.raises(InvalidEmailAddressError):
        provider_from_address('notanemail')
    with pytest.raises(InvalidEmailAddressError):
        provider_from_address('not@anemail')
    with pytest.raises(InvalidEmailAddressError):
        provider_from_address('notanemail.com')

    try:
        # Registering a new provider
        assert provider_from_address('*****@*****.**') == 'unknown'
        providers.register_info(
            'example', {
                "type": "generic",
                "imap": ("mail.example.net", 993),
                "smtp": ("smtp.example.net", 587),
                "auth": "password",
                "domains": ["example.com"],
                "mx_servers": ["mx.example.net"]
            })
        assert provider_from_address('*****@*****.**') == 'example'

        # Registering some filters
        def aol_filter(info, provider, email):
            info['domains'].append('example.net')

        def wildcard_filter(info, provider, email):
            if provider == 'zimbra':
                info['domains'].append('example.org')

        assert provider_from_address('*****@*****.**') == 'unknown'
        assert provider_from_address('*****@*****.**') == 'unknown'
        providers.register_info_filter('aol', aol_filter)
        providers.register_info_filter(None, wildcard_filter)
        assert provider_from_address('*****@*****.**') == 'aol'
        assert provider_from_address('*****@*****.**') == 'zimbra'

        # Modifying provider info based on the email address
        def email_address_filter(info, provider, email):
            if email == '*****@*****.**':
                info['imap'] = ('imap2.example.com', 994)

        orig_imap = tuple(providers['yahoo']['imap'])

        assert (providers.lookup_info(
            'yahoo', '*****@*****.**')['imap'] == orig_imap)
        assert (providers.lookup_info(
            'yahoo', '*****@*****.**')['imap'] == orig_imap)
        providers.register_info_filter(None, email_address_filter)
        assert (providers.lookup_info(
            'yahoo',
            '*****@*****.**')['imap'] == ('imap2.example.com', 994))
        assert (providers.lookup_info(
            'yahoo', '*****@*****.**')['imap'] == orig_imap)
    finally:
        providers.reset()
def test_provider_resolution():
    assert provider_from_address("*****@*****.**") == "unknown"
    assert provider_from_address("*****@*****.**") == "unknown"
    assert provider_from_address("*****@*****.**") == "gmail"
    assert provider_from_address("*****@*****.**") == "yahoo"
    assert provider_from_address("*****@*****.**") == "yahoo"
    assert provider_from_address("*****@*****.**") == "outlook"
    assert provider_from_address("*****@*****.**") == "outlook"
    assert provider_from_address("*****@*****.**") == "aol"
    assert provider_from_address("*****@*****.**") == "aol"
    assert provider_from_address("*****@*****.**") == "aol"
    assert provider_from_address("*****@*****.**") == "eas"
    assert provider_from_address("*****@*****.**") == "fastmail"
    assert provider_from_address("*****@*****.**") == "fastmail"
    assert provider_from_address("*****@*****.**") == "fastmail"
    assert provider_from_address("*****@*****.**") == "icloud"
    assert provider_from_address("*****@*****.**") == "icloud"
    assert provider_from_address("*****@*****.**") == "gmx"
    assert provider_from_address("*****@*****.**") == "gandi"
    assert provider_from_address("*****@*****.**") == "gandi"
    assert provider_from_address("*****@*****.**") == "eas"
    assert provider_from_address("*****@*****.**") == "gmail"
    assert provider_from_address("*****@*****.**") == "gmail"
    assert provider_from_address("*****@*****.**") == "eas"
    assert provider_from_address("*****@*****.**") == "eas"
    assert provider_from_address("*****@*****.**") == "unknown"

    with pytest.raises(InvalidEmailAddressError):
        provider_from_address("notanemail")
    with pytest.raises(InvalidEmailAddressError):
        provider_from_address("not@anemail")
    with pytest.raises(InvalidEmailAddressError):
        provider_from_address("notanemail.com")

    try:
        # Registering a new provider
        assert provider_from_address("*****@*****.**") == "unknown"
        providers.register_info(
            "example",
            {
                "type": "generic",
                "imap": ("mail.example.net", 993),
                "smtp": ("smtp.example.net", 587),
                "auth": "password",
                "domains": ["example.com"],
                "mx_servers": ["mx.example.net"],
            },
        )
        assert provider_from_address("*****@*****.**") == "example"

        # Registering some filters
        def aol_filter(info, provider, email):
            info["domains"].append("example.net")

        def wildcard_filter(info, provider, email):
            if provider == "zimbra":
                info["domains"].append("example.org")

        assert provider_from_address("*****@*****.**") == "unknown"
        assert provider_from_address("*****@*****.**") == "unknown"
        providers.register_info_filter("aol", aol_filter)
        providers.register_info_filter(None, wildcard_filter)
        assert provider_from_address("*****@*****.**") == "aol"
        assert provider_from_address("*****@*****.**") == "zimbra"

        # Modifying provider info based on the email address
        def email_address_filter(info, provider, email):
            if email == "*****@*****.**":
                info["imap"] = ("imap2.example.com", 994)

        orig_imap = tuple(providers["yahoo"]["imap"])

        assert providers.lookup_info("yahoo", "*****@*****.**")["imap"] == orig_imap
        assert providers.lookup_info("yahoo", "*****@*****.**")["imap"] == orig_imap
        providers.register_info_filter(None, email_address_filter)
        assert providers.lookup_info("yahoo", "*****@*****.**")["imap"] == ("imap2.example.com", 994)
        assert providers.lookup_info("yahoo", "*****@*****.**")["imap"] == orig_imap
    finally:
        providers.reset()