88import org .junit .jupiter .params .provider .ArgumentsSource ;
99
1010import java .net .URI ;
11+ import java .util .HashMap ;
12+ import java .util .Map ;
1113import java .util .Optional ;
1214import java .util .Set ;
1315import java .util .stream .Collectors ;
@@ -32,6 +34,12 @@ public void testToWebRepoUri_enterpriseUri(String repositoryHost, String reposit
3234 assertEquals (Optional .of (expectedWebRepoUri ), toWebRepoUri (String .format (repositoryUri , repositoryHost )));
3335 }
3436
37+ @ ParameterizedTest
38+ @ ArgumentsSource (UserInfoArgumentsProvider .class )
39+ public void testUserInfoRedacted (String inputUrl , String expectedRedactedUrl ) {
40+ assertEquals (expectedRedactedUrl , Utils .redactUserInfo (inputUrl ).orElse (null ));
41+ }
42+
3543 private static class WebRepoUriArgumentsProvider implements ArgumentsProvider {
3644
3745 @ Override
@@ -41,6 +49,8 @@ public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
4149 "https://%s.com/acme-inc/my-project" ,
4250 "https://%s.com:443/acme-inc/my-project" ,
4351 "https://user:secret@%s.com/acme-inc/my-project" ,
52+ "https://user:secret%%1Fpassword@%s.com/acme-inc/my-project" ,
53+ "https://user:secret%%1password@%s.com/acme-inc/my-project" ,
4454 "ssh://git@%s.com/acme-inc/my-project.git" ,
4555 "ssh://git@%s.com:22/acme-inc/my-project.git" ,
4656 "git://%s.com/acme-inc/my-project.git" ,
@@ -62,4 +72,20 @@ public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
6272 return host .stream ().flatMap (h -> remoteRepositoryUris .stream ().map (r -> Arguments .arguments (h , r )));
6373 }
6474 }
75+
76+ private static class UserInfoArgumentsProvider implements ArgumentsProvider {
77+
78+ @ Override
79+ public Stream <? extends Arguments > provideArguments (ExtensionContext context ) {
80+ Map <String , String > cases = new HashMap <>();
81+ cases .put ("https://user:password@acme.com/acme-inc/my-project" , "https://******@acme.com/acme-inc/my-project" );
82+ cases .put ("https://user%1Fname:password@acme.com/acme-inc/my-project" , "https://******@acme.com/acme-inc/my-project" );
83+ cases .put ("https://user:secret%1Fpassword@acme.com/acme-inc/my-project" , "https://******@acme.com/acme-inc/my-project" );
84+ cases .put ("https://user:secret%1password@acme.com/acme-inc/my-project" , null );
85+ cases .put ("git@github.com:gradle/common-custom-user-data-gradle-plugin.git" , "git@github.com:gradle/common-custom-user-data-gradle-plugin.git" );
86+
87+ return cases .entrySet ().stream ()
88+ .map (entry -> Arguments .arguments (entry .getKey (), entry .getValue ()));
89+ }
90+ }
6591}
0 commit comments