Example #1
0
def handle_invalid_domain(search_term_as_hex):
    """Called when no valid domain found in GET param, creates a suggestion
    to return to the user.
    """
    decoded_search = None
    try:
        decoded_search = tools.decode_domain(search_term_as_hex)
    except:
        pass

    if decoded_search is not None:
        suggestion = tools.suggest_domain(decoded_search)
        if suggestion is not None:
            app.logger.info(
                'Not a valid domain in GET: {}, suggesting: {}'.format(
                    search_term_as_hex, suggestion))
            encoded_suggestion = tools.encode_domain(suggestion)
            return flask.redirect(
                '/error/0?suggestion={}'.format(encoded_suggestion))

    app.logger.info('Not a valid domain in GET: {}'.format(search_term_as_hex))
    return flask.redirect('/error/0')
Example #2
0
def test_decode_encoded_invalid_ascii_domain():
    """Weird edge cases with non-domains that were causing issues."""
    assert tools.encode_domain('example') == '6578616d706c65'
    assert tools.decode_domain('6578616d706c65') == 'example'
    assert tools.decode_domain(u'6578616d706c65') == 'example'
Example #3
0
def test_decode_encoded_unicode_punycoded_domain():

    # www.xn--xampl-91ef.com in hex
    assert tools.decode_domain('7777772e786e2d2d78616d706c2d393165662e636f6d'
                               ) == u'www.\u0454xampl\u0454.com'
Example #4
0
def test_decode_encoded_ascii_domain():
    assert tools.decode_domain(
        '7777772e6578616d706c652e636f6d') == 'www.example.com'