diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/test_exc.py | 9 | ||||
-rw-r--r-- | test/test_util.py | 30 |
2 files changed, 29 insertions, 10 deletions
diff --git a/test/test_exc.py b/test/test_exc.py index f16498ab..c77be782 100644 --- a/test/test_exc.py +++ b/test/test_exc.py @@ -22,6 +22,7 @@ from git.exc import ( HookExecutionError, RepositoryDirtyError, ) +from git.util import remove_password_if_present from test.lib import TestBase import itertools as itt @@ -34,6 +35,7 @@ _cmd_argvs = ( ('cmd', 'ελληνικα', 'args'), ('θνιψοδε', 'κι', 'αλλα', 'strange', 'args'), ('θνιψοδε', 'κι', 'αλλα', 'non-unicode', 'args'), + ('git', 'clone', '-v', 'https://fakeuser:fakepassword1234@fakerepo.example.com/testrepo'), ) _causes_n_substrings = ( (None, None), # noqa: E241 @IgnorePep8 @@ -81,7 +83,7 @@ class TExc(TestBase): self.assertIsNotNone(c._msg) self.assertIn(' cmdline: ', s) - for a in argv: + for a in remove_password_if_present(argv): self.assertIn(a, s) if not cause: @@ -137,14 +139,15 @@ class TExc(TestBase): @ddt.data( (['cmd1'], None), (['cmd1'], "some cause"), - (['cmd1'], Exception()), + (['cmd1', 'https://fakeuser@fakerepo.example.com/testrepo'], Exception()), ) def test_GitCommandError(self, init_args): argv, cause = init_args c = GitCommandError(argv, cause) s = str(c) - self.assertIn(argv[0], s) + for arg in remove_password_if_present(argv): + self.assertIn(arg, s) if cause: self.assertIn(' failed due to: ', s) self.assertIn(str(cause), s) diff --git a/test/test_util.py b/test/test_util.py index 3961ff35..a213b46c 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -343,18 +343,34 @@ class TestUtils(TestBase): self.assertEqual(t1._name, t2._name) def test_remove_password_from_command_line(self): + username = "fakeuser" password = "fakepassword1234" - url_with_pass = "https://fakeuser:{}@fakerepo.example.com/testrepo".format(password) - url_without_pass = "https://fakerepo.example.com/testrepo" + url_with_user_and_pass = "https://{}:{}@fakerepo.example.com/testrepo".format(username, password) + url_with_user = "https://{}@fakerepo.example.com/testrepo".format(username) + url_with_pass = "https://:{}@fakerepo.example.com/testrepo".format(password) + url_without_user_or_pass = "https://fakerepo.example.com/testrepo" - cmd_1 = ["git", "clone", "-v", url_with_pass] - cmd_2 = ["git", "clone", "-v", url_without_pass] - cmd_3 = ["no", "url", "in", "this", "one"] + cmd_1 = ["git", "clone", "-v", url_with_user_and_pass] + cmd_2 = ["git", "clone", "-v", url_with_user] + cmd_3 = ["git", "clone", "-v", url_with_pass] + cmd_4 = ["git", "clone", "-v", url_without_user_or_pass] + cmd_5 = ["no", "url", "in", "this", "one"] redacted_cmd_1 = remove_password_if_present(cmd_1) + assert username not in " ".join(redacted_cmd_1) assert password not in " ".join(redacted_cmd_1) # Check that we use a copy assert cmd_1 is not redacted_cmd_1 + assert username in " ".join(cmd_1) assert password in " ".join(cmd_1) - assert cmd_2 == remove_password_if_present(cmd_2) - assert cmd_3 == remove_password_if_present(cmd_3) + + redacted_cmd_2 = remove_password_if_present(cmd_2) + assert username not in " ".join(redacted_cmd_2) + assert password not in " ".join(redacted_cmd_2) + + redacted_cmd_3 = remove_password_if_present(cmd_3) + assert username not in " ".join(redacted_cmd_3) + assert password not in " ".join(redacted_cmd_3) + + assert cmd_4 == remove_password_if_present(cmd_4) + assert cmd_5 == remove_password_if_present(cmd_5) |