Move the unit test hierarchy to below test/unit/python/jw/pkg. Nesting the subdirectories so deeply might be overly careful, but it may as well be not - maybe in the future installable test packages are going to be generated and need simple ways to install without stepping onto each other's toes. If not, it's easier to cut two directory components out than having to reorganize possibly incoherent paths grown over multiple packages.
Signed-off-by: Jan Lindemann <jan@janware.com>
82 lines
2.1 KiB
Python
82 lines
2.1 KiB
Python
from jw.pkg.lib.Uri import Uri
|
|
|
|
# Basic URL parsing
|
|
u = Uri('ssh://john.doe@host:22/path/to/repo')
|
|
assert u.protocol == 'ssh'
|
|
assert u.hostname == 'host'
|
|
assert u.port == 22
|
|
assert u.path == '/path/to/repo'
|
|
|
|
# Username and password
|
|
u = Uri('https://user:pass@example.com/repo')
|
|
assert u.username == 'user'
|
|
assert u.password == 'pass'
|
|
|
|
# Credentials in output
|
|
u = Uri('https://user:secret@example.com/repo')
|
|
assert 'secret' in u.full # full shows password
|
|
assert '<hidden>' in u.safe_full_with_username # safe version hides password
|
|
|
|
# Scheme defaults to file
|
|
u = Uri('/local/path')
|
|
assert u.scheme == 'file://'
|
|
assert u.protocol == 'file'
|
|
|
|
# Pimp returns existing Uri unchanged
|
|
u1 = Uri('ssh://host/path')
|
|
u2 = Uri.pimp(u1)
|
|
assert u2 is u1
|
|
|
|
# New with path (add)
|
|
u = Uri('ssh://host/path')
|
|
u2 = u.new_add_path('subdir')
|
|
assert u2.to_string == 'ssh://host/path/subdir'
|
|
|
|
# New with path (replace) - to_string is updated
|
|
u3 = u.new_replace_path('/other')
|
|
assert u3.to_string == 'ssh://host/other'
|
|
|
|
# Authority includes credentials
|
|
u = Uri('ssh://user:pass@host:22/path')
|
|
assert u.authority == 'userpass@host:22'
|
|
|
|
# Origin excludes credentials
|
|
assert u.origin == 'host:22'
|
|
|
|
# ID and safe version hide password
|
|
assert u.id == 'ssh://user:<hidden>@host:22'
|
|
assert '<hidden>' in u.safe_full_with_username
|
|
|
|
# Full includes path and credentials
|
|
assert u.full == 'ssh://userpass@host:22/path'
|
|
|
|
# Simple URLs
|
|
u = Uri('https://example.com/repo.git')
|
|
assert u.hostname == 'example.com'
|
|
assert u.path == '/repo.git'
|
|
assert u.basename == 'repo.git'
|
|
|
|
# Username setter
|
|
u = Uri('ssh://host/path')
|
|
u.set_username('newuser')
|
|
assert u.username == 'newuser'
|
|
|
|
# Password setter
|
|
u = Uri('ssh://host/path')
|
|
u.set_password('newpass')
|
|
assert u.password == 'newpass'
|
|
|
|
# No port
|
|
u = Uri('ssh://host/path')
|
|
assert u.port is None
|
|
assert u.port_str is None
|
|
|
|
# to_string returns original
|
|
u = Uri('ssh://user:pass@host:22/path')
|
|
assert u.to_string == 'ssh://user:pass@host:22/path'
|
|
|
|
# String representation hides credentials
|
|
u = Uri('https://user:secret@example.com/repo.git')
|
|
assert '<hidden>' in str(u)
|
|
|
|
print('All Uri tests passed')
|