@ -45,7 +45,7 @@ func TestQuery(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
tests := [ ] subtest {
{
@ -105,7 +105,7 @@ func TestQueryWithEmailSuffix(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailSuffix = "test.example.com"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
tests := [ ] subtest {
{
@ -141,7 +141,7 @@ func TestUserFilter(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
c . UserSearch . Filter = "(ou:dn:=Seattle)"
tests := [ ] subtest {
@ -190,7 +190,7 @@ func TestUsernameWithMultipleAttributes(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn,mail"
c . UserSearch . Username = UsernameAttributes { "cn" , " mail" }
c . UserSearch . Filter = "(ou:dn:=Seattle)"
tests := [ ] subtest {
@ -227,7 +227,7 @@ func TestGroupQuery(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
c . GroupSearch . BaseDN = "ou=Groups,ou=TestGroupQuery,dc=example,dc=org"
c . GroupSearch . UserMatchers = [ ] UserMatcher {
{
@ -275,7 +275,7 @@ func TestGroupsOnUserEntity(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
c . GroupSearch . BaseDN = "ou=Groups,ou=TestGroupsOnUserEntity,dc=example,dc=org"
c . GroupSearch . UserMatchers = [ ] UserMatcher {
{
@ -321,7 +321,7 @@ func TestGroupFilter(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
c . GroupSearch . BaseDN = "ou=TestGroupFilter,dc=example,dc=org"
c . GroupSearch . UserMatchers = [ ] UserMatcher {
{
@ -370,7 +370,7 @@ func TestGroupToUserMatchers(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
c . GroupSearch . BaseDN = "ou=TestGroupToUserMatchers,dc=example,dc=org"
c . GroupSearch . UserMatchers = [ ] UserMatcher {
{
@ -426,7 +426,7 @@ func TestDeprecatedGroupToUserMatcher(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
c . GroupSearch . BaseDN = "ou=TestDeprecatedGroupToUserMatcher,dc=example,dc=org"
c . GroupSearch . UserAttr = "DN"
c . GroupSearch . GroupAttr = "member"
@ -471,7 +471,7 @@ func TestStartTLS(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
tests := [ ] subtest {
{
@ -495,7 +495,7 @@ func TestInsecureSkipVerify(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
tests := [ ] subtest {
{
@ -519,7 +519,7 @@ func TestLDAPS(t *testing.T) {
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
tests := [ ] subtest {
{
@ -562,13 +562,43 @@ func TestUsernamePrompt(t *testing.T) {
}
}
func TestUsernameAttributesUnmarshal ( t * testing . T ) {
tests := [ ] struct {
name string
json string
want UsernameAttributes
wantErr bool
} {
{ name : "single string" , json : ` "uid" ` , want : UsernameAttributes { "uid" } } ,
{ name : "array of strings" , json : ` ["uid","mail"] ` , want : UsernameAttributes { "uid" , "mail" } } ,
{ name : "single element array" , json : ` ["cn"] ` , want : UsernameAttributes { "cn" } } ,
{ name : "empty string" , json : ` "" ` , want : nil } ,
{ name : "invalid type" , json : ` 123 ` , wantErr : true } ,
}
for _ , tt := range tests {
t . Run ( tt . name , func ( t * testing . T ) {
var got UsernameAttributes
err := got . UnmarshalJSON ( [ ] byte ( tt . json ) )
if ( err != nil ) != tt . wantErr {
t . Fatalf ( "UnmarshalJSON() error = %v, wantErr %v" , err , tt . wantErr )
}
if ! tt . wantErr {
if diff := pretty . Compare ( tt . want , got ) ; diff != "" {
t . Errorf ( "unexpected result: %s" , diff )
}
}
} )
}
}
func TestNestedGroups ( t * testing . T ) {
c := & Config { }
c . UserSearch . BaseDN = "ou=People,ou=TestNestedGroups,dc=example,dc=org"
c . UserSearch . NameAttr = "cn"
c . UserSearch . EmailAttr = "mail"
c . UserSearch . IDAttr = "DN"
c . UserSearch . Username = "cn"
c . UserSearch . Username = UsernameAttributes { "cn" }
c . GroupSearch . BaseDN = "ou=TestNestedGroups,dc=example,dc=org"
c . GroupSearch . UserMatchers = [ ] UserMatcher {