diff --git a/ada_url/ada_adapter.py b/ada_url/ada_adapter.py index 3aeaa19..0f757f5 100644 --- a/ada_url/ada_adapter.py +++ b/ada_url/ada_adapter.py @@ -271,7 +271,11 @@ def __str__(self): return self.href def __repr__(self): - return f'' + password = self.password + self.password = '' + ret = f'' + self.password = password + return ret @staticmethod def can_parse(url: str, base: Optional[str] = None) -> bool: @@ -755,5 +759,6 @@ def encode(s: Union[str, bytes]) -> bytes: idna_to_ascii = idna.encode + def get_version(): return ffi.string(lib.ada_get_version()).decode() diff --git a/tests/test_ada_url.py b/tests/test_ada_url.py index d269b31..ce82a97 100644 --- a/tests/test_ada_url.py +++ b/tests/test_ada_url.py @@ -194,6 +194,15 @@ def test_to_repr(self): expected = '' self.assertEqual(actual, expected) + def test_to_repr_password(self): + # Redact the password attribute from __repr__, but keep it on the object. + urlobj = URL('https://user:password1@example.org/../something.txt') + self.assertEqual(repr(urlobj), '') + self.assertEqual(urlobj.password, 'password1') + self.assertEqual( + str(urlobj), 'https://user:password1@example.org/something.txt' + ) + def test_check_url(self): for s, expected in ( ('https:example.org', True), @@ -555,6 +564,6 @@ class GetVersionTests(TestCase): def test_get_version(self): value = get_version() version_parts = value.split('.') - self.assertEqual(len(version_parts), 3) # Three parts + self.assertEqual(len(version_parts), 3) # Three parts int(version_parts[0]) # Major should be an integer int(version_parts[1]) # Minor should be an integer