@@ -320,3 +320,27 @@ func Test_addControlDescriptions(t *testing.T) {
320320 })
321321 }
322322}
323+
324+ func TestEscapeDN (t * testing.T ) {
325+ tests := []struct {
326+ name string
327+ dn string
328+ want string
329+ }{
330+ {name : "emptyString" , dn : "" , want : "" },
331+ {name : "comma" , dn : "test,user" , want : "test\\ ,user" },
332+ {name : "numberSign" , dn : "#test#user#" , want : "\\ #test#user#" },
333+ {name : "backslash" , dn : "\\ test\\ user\\ " , want : "\\ \\ test\\ \\ user\\ \\ " },
334+ {name : "whitespaces" , dn : " test user " , want : "\\ test user \\ " },
335+ {name : "nullByte" , dn : "\u0000 te\x00 st\x00 user" + string (rune (0 )), want : "\\ 00te\\ 00st\\ 00user\\ 00" },
336+ {name : "variousCharacters" , dn : "test\" +,;<>\\ -_user" , want : "test\\ \" \\ +\\ ,\\ ;\\ <\\ >\\ \\ -_user" },
337+ {name : "multiByteRunes" , dn : "test\u0391 user " , want : "test\u0391 user\\ " },
338+ }
339+ for _ , tt := range tests {
340+ t .Run (tt .name , func (t * testing.T ) {
341+ if got := EscapeDN (tt .dn ); got != tt .want {
342+ t .Errorf ("EscapeDN(%s) = %s, expected %s" , tt .dn , got , tt .want )
343+ }
344+ })
345+ }
346+ }
0 commit comments