mirror of
https://github.com/neogeek23/drawshare.git
synced 2026-02-04 11:08:21 +00:00
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
from .common import HyperlinkTestCase
|
|
from hyperlink import parse, EncodedURL, DecodedURL
|
|
|
|
BASIC_URL = 'http://example.com/#'
|
|
TOTAL_URL = "https://%75%73%65%72:%00%00%00%00@xn--bcher-kva.ch:8080/a/nice%20nice/./path/?zot=23%25&zut#frég"
|
|
UNDECODABLE_FRAG_URL = TOTAL_URL + '%C3'
|
|
# the %C3 above percent-decodes to an unpaired \xc3 byte which makes this
|
|
# invalid utf8
|
|
|
|
|
|
class TestURL(HyperlinkTestCase):
|
|
def test_parse(self):
|
|
purl = parse(TOTAL_URL)
|
|
assert isinstance(purl, DecodedURL)
|
|
assert purl.user == 'user'
|
|
assert purl.get('zot') == ['23%']
|
|
assert purl.fragment == 'frég'
|
|
|
|
purl2 = parse(TOTAL_URL, decoded=False)
|
|
assert isinstance(purl2, EncodedURL)
|
|
assert purl2.get('zot') == ['23%25']
|
|
|
|
with self.assertRaises(UnicodeDecodeError):
|
|
purl3 = parse(UNDECODABLE_FRAG_URL)
|
|
|
|
purl3 = parse(UNDECODABLE_FRAG_URL, lazy=True)
|
|
|
|
with self.assertRaises(UnicodeDecodeError):
|
|
purl3.fragment
|
|
|
|
return
|