Files
kubesphere/pkg/apiserver/authentication/identityprovider/ldap/ldap_test.go
2025-04-30 15:53:51 +08:00

82 lines
2.0 KiB
Go

/*
* Copyright 2024 the KubeSphere Authors.
* Please refer to the LICENSE file in the root directory of the project.
* https://github.com/kubesphere/kubesphere/blob/master/LICENSE
*/
package ldap
import (
"os"
"testing"
"kubesphere.io/kubesphere/pkg/server/options"
"github.com/google/go-cmp/cmp"
"gopkg.in/yaml.v3"
)
func TestNewLdapProvider(t *testing.T) {
opts := `
host: test.sn.mynetname.net:389
managerDN: uid=root,cn=users,dc=test,dc=sn,dc=mynetname,dc=net
managerPassword: test
startTLS: false
userSearchBase: dc=test,dc=sn,dc=mynetname,dc=net
loginAttribute: uid
mailAttribute: mail
`
var dynamicOptions options.DynamicOptions
err := yaml.Unmarshal([]byte(opts), &dynamicOptions)
if err != nil {
t.Fatal(err)
}
got, err := new(ldapProviderFactory).Create(dynamicOptions)
if err != nil {
t.Fatal(err)
}
expected := &ldapProvider{
Host: "test.sn.mynetname.net:389",
StartTLS: false,
InsecureSkipVerify: false,
ReadTimeout: 15000,
RootCA: "",
RootCAData: "",
ManagerDN: "uid=root,cn=users,dc=test,dc=sn,dc=mynetname,dc=net",
ManagerPassword: "test",
UserSearchBase: "dc=test,dc=sn,dc=mynetname,dc=net",
UserSearchFilter: "",
GroupSearchBase: "",
GroupSearchFilter: "",
UserMemberAttribute: "",
GroupMemberAttribute: "",
LoginAttribute: "uid",
MailAttribute: "mail",
}
if diff := cmp.Diff(got, expected); diff != "" {
t.Errorf("%T differ (-got, +want): %s", expected, diff)
}
}
func TestLdapProvider_Authenticate(t *testing.T) {
configFile := os.Getenv("LDAP_TEST_FILE")
if configFile == "" {
t.Skip("Skipped")
}
opts, err := os.ReadFile(configFile)
if err != nil {
t.Fatal(err)
}
var dynamicOptions options.DynamicOptions
if err = yaml.Unmarshal(opts, &dynamicOptions); err != nil {
t.Fatal(err)
}
ldapProvider, err := new(ldapProviderFactory).Create(dynamicOptions)
if err != nil {
t.Fatal(err)
}
if _, err = ldapProvider.Authenticate("test", "test"); err != nil {
t.Fatal(err)
}
}