Skip to content

Commit c6b1492

Browse files
committed
Add a separate testcase for special chars in userinfo and revert changes to other tests
1 parent ae5fc8b commit c6b1492

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

tests/base.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,23 @@ def test_handles_uri_with_port_and_userinfo(
5656
assert uri.path is None
5757
assert uri.query is None
5858
assert uri.fragment is None
59+
assert uri.userinfo == 'user:pass'
60+
61+
def test_handles_tricky_userinfo(
62+
self, uri_with_port_and_tricky_userinfo):
63+
"""
64+
Test that self.test_class can handle a URI with unusual
65+
(non a-z) chars in userinfo.
66+
"""
67+
uri = self.test_class.from_string(uri_with_port_and_tricky_userinfo)
68+
assert uri.scheme == 'ssh'
69+
# 6 == len('ftp://')
70+
assert uri.authority == uri_with_port_and_tricky_userinfo[6:]
71+
assert uri.host != uri.authority
72+
assert str(uri.port) == '22'
73+
assert uri.path is None
74+
assert uri.query is None
75+
assert uri.fragment is None
5976
assert uri.userinfo == 'user%20!=:pass'
6077

6178
def test_handles_basic_uri_with_path(self, basic_uri_with_path):
@@ -93,7 +110,7 @@ def test_handles_uri_with_everything(self, uri_with_everything):
93110
assert uri.path == '/path/to/resource'
94111
assert uri.query == 'key=value'
95112
assert uri.fragment == 'fragment'
96-
assert uri.userinfo == 'user%20!=:pass'
113+
assert uri.userinfo == 'user:pass'
97114
assert str(uri.port) == '443'
98115

99116
def test_handles_relative_uri(self, relative_uri):

tests/conftest.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ def basic_uri_with_port(request):
7777

7878
@pytest.fixture(params=valid_hosts)
7979
def uri_with_port_and_userinfo(request):
80+
return 'ssh://user:pass@%s:22' % request.param
81+
82+
83+
@pytest.fixture(params=valid_hosts)
84+
def uri_with_port_and_tricky_userinfo(request):
8085
return 'ssh://%s@%s:22' % ('user%20!=:pass', request.param)
8186

8287

@@ -92,8 +97,8 @@ def uri_with_path_and_query(request):
9297

9398
@pytest.fixture(params=valid_hosts)
9499
def uri_with_everything(request):
95-
return 'https://%s@%s:443/path/to/resource?key=value#fragment' % (
96-
'user%20!=:pass', request.param)
100+
return 'https://user:pass@%s:443/path/to/resource?key=value#fragment' % (
101+
request.param)
97102

98103

99104
@pytest.fixture(params=valid_hosts)

tests/test_parseresult.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def test_handles_uri_with_everything(self, uri_with_everything):
113113
assert uri.path == b'/path/to/resource'
114114
assert uri.query == b'key=value'
115115
assert uri.fragment == b'fragment'
116-
assert uri.userinfo == b'user%20!=:pass'
116+
assert uri.userinfo == b'user:pass'
117117
assert uri.port == 443
118118
assert isinstance(uri.authority, bytes) is True
119119

0 commit comments

Comments
 (0)