8
8
import org .junit .jupiter .params .provider .ArgumentsSource ;
9
9
10
10
import java .net .URI ;
11
+ import java .util .HashMap ;
12
+ import java .util .Map ;
11
13
import java .util .Optional ;
12
14
import java .util .Set ;
13
15
import java .util .stream .Collectors ;
@@ -32,6 +34,12 @@ public void testToWebRepoUri_enterpriseUri(String repositoryHost, String reposit
32
34
assertEquals (Optional .of (expectedWebRepoUri ), toWebRepoUri (String .format (repositoryUri , repositoryHost )));
33
35
}
34
36
37
+ @ ParameterizedTest
38
+ @ ArgumentsSource (UserInfoArgumentsProvider .class )
39
+ public void testUserInfoRedacted (String inputUrl , String expectedRedactedUrl ) {
40
+ assertEquals (expectedRedactedUrl , Utils .redactUserInfo (inputUrl ).orElse (null ));
41
+ }
42
+
35
43
private static class WebRepoUriArgumentsProvider implements ArgumentsProvider {
36
44
37
45
@ Override
@@ -41,6 +49,8 @@ public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
41
49
"https://%s.com/acme-inc/my-project" ,
42
50
"https://%s.com:443/acme-inc/my-project" ,
43
51
"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" ,
44
54
"ssh://git@%s.com/acme-inc/my-project.git" ,
45
55
"ssh://git@%s.com:22/acme-inc/my-project.git" ,
46
56
"git://%s.com/acme-inc/my-project.git" ,
@@ -62,4 +72,20 @@ public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
62
72
return host .stream ().flatMap (h -> remoteRepositoryUris .stream ().map (r -> Arguments .arguments (h , r )));
63
73
}
64
74
}
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
+ }
65
91
}
0 commit comments