[SCM-874] ScmResult output password masking does not handle multiline text
Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/302ccb48 Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/302ccb48 Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/302ccb48 Branch: refs/heads/master Commit: 302ccb4854af613b5818c4187e5d8fd537484bf9 Parents: 609c4bd Author: Michael Osipov <[email protected]> Authored: Sun Mar 18 00:53:26 2018 +0100 Committer: Michael Osipov <[email protected]> Committed: Sun Mar 18 00:53:26 2018 +0100 ---------------------------------------------------------------------- .../src/main/java/org/apache/maven/scm/ScmResult.java | 2 +- .../test/java/org/apache/maven/scm/ScmResultTest.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-scm/blob/302ccb48/maven-scm-api/src/main/java/org/apache/maven/scm/ScmResult.java ---------------------------------------------------------------------- diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/ScmResult.java b/maven-scm-api/src/main/java/org/apache/maven/scm/ScmResult.java index ace98d9..ae1ef0e 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/ScmResult.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/ScmResult.java @@ -44,7 +44,7 @@ public class ScmResult public static final String PASSWORD_PLACE_HOLDER = "********"; //works for SVN and git - private Pattern patternForUserColonPasswordAtHost = Pattern.compile( "^.*:(.*)@.*$" ); + private Pattern patternForUserColonPasswordAtHost = Pattern.compile( "^.*:(.*)@.*$", Pattern.DOTALL ); /** * Copy constructor. http://git-wip-us.apache.org/repos/asf/maven-scm/blob/302ccb48/maven-scm-api/src/test/java/org/apache/maven/scm/ScmResultTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-api/src/test/java/org/apache/maven/scm/ScmResultTest.java b/maven-scm-api/src/test/java/org/apache/maven/scm/ScmResultTest.java index 7db262e..621f4ea 100644 --- a/maven-scm-api/src/test/java/org/apache/maven/scm/ScmResultTest.java +++ b/maven-scm-api/src/test/java/org/apache/maven/scm/ScmResultTest.java @@ -30,14 +30,20 @@ public class ScmResultTest private static final String SCM_URL_GIT_COLON = "scm:git:https://username:" + PASSWORD + "@github.com/username/repo.git"; - private static final String MOCK_ERROR_OUTPUT = "fatal repository " + SCM_URL_GIT_COLON + "does not exist"; + private static final String MOCK_ERROR_OUTPUT = "fatal: repository '" + SCM_URL_GIT_COLON + "' not found"; + + private static final String MOCK_ERROR_MULTILINE_OUTPUT = "remote: Invalid username or password." + System.lineSeparator() + "fatal: Authentication failed for '" + SCM_URL_GIT_COLON + "'"; public void testPasswordsAreMaskedInOutput() throws Exception { ScmResult result = new ScmResult( "git push", "git-push failed", MOCK_ERROR_OUTPUT, false ); - assertNotSame( "Command Output contains password", MOCK_ERROR_OUTPUT, result.getCommandOutput() ); - assertTrue( "Command Output not masked", result.getCommandOutput().contains( ScmResult.PASSWORD_PLACE_HOLDER ) ); + assertNotSame( "Command output contains password", MOCK_ERROR_OUTPUT, result.getCommandOutput() ); + assertTrue( "Command output not masked", result.getCommandOutput().contains( ScmResult.PASSWORD_PLACE_HOLDER ) ); + + result = new ScmResult( "git push", "git-push failed", MOCK_ERROR_MULTILINE_OUTPUT, false ); + assertNotSame( "Command output contains password", MOCK_ERROR_MULTILINE_OUTPUT, result.getCommandOutput() ); + assertTrue( "Command output not masked", result.getCommandOutput().contains( ScmResult.PASSWORD_PLACE_HOLDER ) ); } }
