@@ -27,9 +27,10 @@ func TestPreCheckSinkURI(t *testing.T) {
2727 t .Parallel ()
2828
2929 tests := []struct {
30- name string
31- uri string
32- err string
30+ name string
31+ uri string
32+ err string
33+ notContains string
3334 }{
3435 {
3536 name : "valid domain MySQL URI" ,
@@ -76,6 +77,12 @@ func TestPreCheckSinkURI(t *testing.T) {
7677 uri : "kafka://3333:10:9:101::204:9092/topic1" ,
7778 err : "sink uri host is not valid IPv6 address" ,
7879 },
80+ {
81+ name : "invalid escaped URI masks password" ,
82+ uri : "mysql://root:verysecure@127.0.0.1/%zz" ,
83+ err : `parse "<invalid uri>"` ,
84+ notContains : "verysecure" ,
85+ },
7986 }
8087
8188 for _ , tt := range tests {
@@ -85,6 +92,9 @@ func TestPreCheckSinkURI(t *testing.T) {
8592 _ , err := preCheckSinkURI (test .uri )
8693 if test .err != "" {
8794 require .Contains (t , err .Error (), test .err )
95+ if test .notContains != "" {
96+ require .NotContains (t , err .Error (), test .notContains )
97+ }
8898 } else {
8999 require .NoError (t , err )
90100 }
@@ -126,4 +136,12 @@ func TestValidateSink(t *testing.T) {
126136 t , err .Error (),
127137 "sink uri scheme is not supported with syncpoint enabled" ,
128138 )
139+ require .NotContains (t , err .Error (), "verysecure" )
140+ require .NotContains (t , err .Error (), "sasl-password=verysecure" )
141+
142+ sinkURI = "kafka://127.0.0.1:9092/topic?sasl-password=verysecure"
143+ err = Validate (ctx , model .DefaultChangeFeedID ("test" ), sinkURI , replicateConfig , nil )
144+ require .NotNil (t , err )
145+ require .Contains (t , err .Error (), "sasl-password=xxxxx" )
146+ require .NotContains (t , err .Error (), "verysecure" )
129147}
0 commit comments