test: Move unit tests below jw/pkg
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>
This commit is contained in:
parent
c94916d7de
commit
f4d40efc05
5 changed files with 9 additions and 1 deletions
82
test/unit/python/jw/pkg/lib/Uri/test.py
Normal file
82
test/unit/python/jw/pkg/lib/Uri/test.py
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
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')
|
||||
Loading…
Add table
Add a link
Reference in a new issue