Example #1
0
def test_URL():
    url = URL('http://www.example.com/')
    assert url.url == 'http://www.example.com/'
    assert list(url.urlparse) == ['http', 'www.example.com', '/', '', '', '']
    assert url.netloc == 'www.example.com'
    assert url.hostname == 'www.example.com'
    assert url.hostname_without_www == 'example.com'
    assert url.registered_domain == 'example.com'
    assert url.original_frag is None
    url = URL('http://www.example.com/#foo#foo')
    assert url.original_frag == 'foo#foo'
    url = URL('http://www.example.com/#')
    assert url.original_frag is None

    # canonicalization
    url = URL('http://www.example.com/?')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com/?#')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com/foo')
    assert url.url == 'http://www.example.com/foo'
    url = URL('http://www.example.com/foo/')
    assert url.url == 'http://www.example.com/foo/'

    # urljoin
    urlj1 = URL('http://www.example.com/foo/')
    urlj2 = 'http://www.example.com/foo/'
    url = URL('foo', urljoin=urlj1)
    assert url.url == 'http://www.example.com/foo/foo'
    url = URL('foo', urljoin=urlj1)
    assert url.url == 'http://www.example.com/foo/foo'
    url = URL('/bar', urljoin=urlj1)
    assert url.url == 'http://www.example.com/bar'
    url = URL('/bar', urljoin=urlj2)
    assert url.url == 'http://www.example.com/bar'
    url = URL('http://sub.example.com/', urljoin=urlj1)
    assert url.url == 'http://sub.example.com/'
    url = URL('http://sub.example.com/', urljoin=urlj2)
    assert url.url == 'http://sub.example.com/'

    # read-only
    with pytest.raises(AttributeError):
        url.url = 'foo'
Example #2
0
def test_URL():
    url = URL('http://www.example.com/')
    assert url.url == 'http://www.example.com/'
    assert list(url.urlsplit) == ['http', 'www.example.com', '/', '', '']
    assert url.netloc == 'www.example.com'
    assert url.hostname == 'www.example.com'
    assert url.hostname_without_www == 'example.com'
    assert url.registered_domain == 'example.com'
    assert url.original_frag is None
    url = URL('http://www.example.com/#foo#foo')
    assert url.original_frag == '#foo#foo'
    url = URL('http://www.example.com/#')
    assert url.original_frag is None

    # canonicalization
    url = URL('http://www.example.com/?')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com/?#')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com/foo')
    assert url.url == 'http://www.example.com/foo'
    url = URL('http://www.example.com/foo/')
    assert url.url == 'http://www.example.com/foo/'

    # urljoin
    urlj1 = URL('http://www.example.com/foo/')
    urlj2 = 'http://www.example.com/foo/'
    url = URL('foo', urljoin=urlj1)
    assert url.url == 'http://www.example.com/foo/foo'
    url = URL('foo', urljoin=urlj1)
    assert url.url == 'http://www.example.com/foo/foo'
    url = URL('/bar', urljoin=urlj1)
    assert url.url == 'http://www.example.com/bar'
    url = URL('/bar', urljoin=urlj2)
    assert url.url == 'http://www.example.com/bar'
    url = URL('http://sub.example.com/', urljoin=urlj1)
    assert url.url == 'http://sub.example.com/'
    url = URL('http://sub.example.com/', urljoin=urlj2)
    assert url.url == 'http://sub.example.com/'

    url = URL('foo', urljoin='http://example.com/subdir/')  # base can cause this
    assert url.url == 'http://example.com/subdir/foo'

    # read-only
    with pytest.raises(AttributeError):
        url.url = 'foo'

    # urljoin examples from RFC 3986 -- python takes care of . and ..
    urlj = URL('http://a/b/c/d;p?q')
    # assert URL('g:h', urljoin=urlj).url == 'g:h'  # absolute url missing hostname
    assert URL('g', urljoin=urlj).url == 'http://a/b/c/g'
    assert URL('./g', urljoin=urlj).url == 'http://a/b/c/g'
    assert URL('g/', urljoin=urlj).url == 'http://a/b/c/g/'
    assert URL('/g', urljoin=urlj).url == 'http://a/g'
    assert URL('//g', urljoin=urlj).url == 'http://g/'  # altered because I insist on the trailing /
    assert URL('?y', urljoin=urlj).url == 'http://a/b/c/d;p?y'
    assert URL('g?y', urljoin=urlj).url == 'http://a/b/c/g?y'
    assert URL('#s', urljoin=urlj).url == 'http://a/b/c/d;p?q'  # I drop the frag
    assert URL('g#s', urljoin=urlj).url == 'http://a/b/c/g'  # I drop the frag
    assert URL('g?y#s', urljoin=urlj).url == 'http://a/b/c/g?y'  # I drop the frag
    assert URL(';x', urljoin=urlj).url == 'http://a/b/c/;x'
    assert URL('g;x', urljoin=urlj).url == 'http://a/b/c/g;x'
    assert URL('g;x?y#s', urljoin=urlj).url == 'http://a/b/c/g;x?y'  # I drop the frag
    assert URL('', urljoin=urlj).url == 'http://a/b/c/d;p?q'
    assert URL('.', urljoin=urlj).url == 'http://a/b/c/'
    assert URL('./', urljoin=urlj).url == 'http://a/b/c/'
    assert URL('..', urljoin=urlj).url == 'http://a/b/'
    assert URL('../', urljoin=urlj).url == 'http://a/b/'
    assert URL('../g', urljoin=urlj).url == 'http://a/b/g'
    assert URL('../..', urljoin=urlj).url == 'http://a/'
    assert URL('../../', urljoin=urlj).url == 'http://a/'
    assert URL('../../g', urljoin=urlj).url == 'http://a/g'
Example #3
0
def test_URL():
    url = URL('http://www.example.com/')
    assert url.url == 'http://www.example.com/'
    assert list(url.urlsplit) == ['http', 'www.example.com', '/', '', '']
    assert url.netloc == 'www.example.com'
    assert url.hostname == 'www.example.com'
    assert url.hostname_without_www == 'example.com'
    assert url.registered_domain == 'example.com'
    assert url.original_frag is None
    url = URL('http://www.example.com/#foo#foo')
    assert url.original_frag == '#foo#foo'
    url = URL('http://www.example.com/#')
    assert url.original_frag is None

    # canonicalization
    url = URL('http://www.example.com/?')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com/?#')
    assert url.url == 'http://www.example.com/'
    url = URL('http://www.example.com/foo')
    assert url.url == 'http://www.example.com/foo'
    url = URL('http://www.example.com/foo/')
    assert url.url == 'http://www.example.com/foo/'

    # urljoin
    urlj1 = URL('http://www.example.com/foo/')
    urlj2 = 'http://www.example.com/foo/'
    url = URL('foo', urljoin=urlj1)
    assert url.url == 'http://www.example.com/foo/foo'
    url = URL('foo', urljoin=urlj1)
    assert url.url == 'http://www.example.com/foo/foo'
    url = URL('/bar', urljoin=urlj1)
    assert url.url == 'http://www.example.com/bar'
    url = URL('/bar', urljoin=urlj2)
    assert url.url == 'http://www.example.com/bar'
    url = URL('http://sub.example.com/', urljoin=urlj1)
    assert url.url == 'http://sub.example.com/'
    url = URL('http://sub.example.com/', urljoin=urlj2)
    assert url.url == 'http://sub.example.com/'

    url = URL('foo',
              urljoin='http://example.com/subdir/')  # base can cause this
    assert url.url == 'http://example.com/subdir/foo'

    # read-only
    with pytest.raises(AttributeError):
        url.url = 'foo'

    # urljoin examples from RFC 3986 -- python takes care of . and ..
    urlj = URL('http://a/b/c/d;p?q')
    # assert URL('g:h', urljoin=urlj).url == 'g:h'  # absolute url missing hostname
    assert URL('g', urljoin=urlj).url == 'http://a/b/c/g'
    assert URL('./g', urljoin=urlj).url == 'http://a/b/c/g'
    assert URL('g/', urljoin=urlj).url == 'http://a/b/c/g/'
    assert URL('/g', urljoin=urlj).url == 'http://a/g'
    assert URL(
        '//g', urljoin=urlj
    ).url == 'http://g/'  # altered because I insist on the trailing /
    assert URL('?y', urljoin=urlj).url == 'http://a/b/c/d;p?y'
    assert URL('g?y', urljoin=urlj).url == 'http://a/b/c/g?y'
    assert URL('#s',
               urljoin=urlj).url == 'http://a/b/c/d;p?q'  # I drop the frag
    assert URL('g#s', urljoin=urlj).url == 'http://a/b/c/g'  # I drop the frag
    assert URL('g?y#s',
               urljoin=urlj).url == 'http://a/b/c/g?y'  # I drop the frag
    assert URL(';x', urljoin=urlj).url == 'http://a/b/c/;x'
    assert URL('g;x', urljoin=urlj).url == 'http://a/b/c/g;x'
    assert URL('g;x?y#s',
               urljoin=urlj).url == 'http://a/b/c/g;x?y'  # I drop the frag
    assert URL('', urljoin=urlj).url == 'http://a/b/c/d;p?q'
    assert URL('.', urljoin=urlj).url == 'http://a/b/c/'
    assert URL('./', urljoin=urlj).url == 'http://a/b/c/'
    assert URL('..', urljoin=urlj).url == 'http://a/b/'
    assert URL('../', urljoin=urlj).url == 'http://a/b/'
    assert URL('../g', urljoin=urlj).url == 'http://a/b/g'
    assert URL('../..', urljoin=urlj).url == 'http://a/'
    assert URL('../../', urljoin=urlj).url == 'http://a/'
    assert URL('../../g', urljoin=urlj).url == 'http://a/g'