mirror of https://github.com/grafana/grafana.git
87 lines
2.1 KiB
Go
87 lines
2.1 KiB
Go
package ldap
|
|
|
|
import (
|
|
"testing"
|
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
"gopkg.in/ldap.v3"
|
|
|
|
"github.com/grafana/grafana/pkg/log"
|
|
)
|
|
|
|
func TestLdapLogin(t *testing.T) {
|
|
Convey("Login using ldap", t, func() {
|
|
AuthScenario("When login with invalid credentials", func(scenario *scenarioContext) {
|
|
conn := &mockLdapConn{}
|
|
entry := ldap.Entry{}
|
|
result := ldap.SearchResult{Entries: []*ldap.Entry{&entry}}
|
|
conn.setSearchResult(&result)
|
|
|
|
conn.bindProvider = func(username, password string) error {
|
|
return &ldap.Error{
|
|
ResultCode: 49,
|
|
}
|
|
}
|
|
auth := &Auth{
|
|
server: &ServerConfig{
|
|
Attr: AttributeMap{
|
|
Username: "username",
|
|
Name: "name",
|
|
MemberOf: "memberof",
|
|
},
|
|
SearchBaseDNs: []string{"BaseDNHere"},
|
|
},
|
|
conn: conn,
|
|
log: log.New("test-logger"),
|
|
}
|
|
|
|
err := auth.Login(scenario.loginUserQuery)
|
|
|
|
Convey("it should return invalid credentials error", func() {
|
|
So(err, ShouldEqual, ErrInvalidCredentials)
|
|
})
|
|
})
|
|
|
|
AuthScenario("When login with valid credentials", func(scenario *scenarioContext) {
|
|
conn := &mockLdapConn{}
|
|
entry := ldap.Entry{
|
|
DN: "dn", Attributes: []*ldap.EntryAttribute{
|
|
{Name: "username", Values: []string{"markelog"}},
|
|
{Name: "surname", Values: []string{"Gaidarenko"}},
|
|
{Name: "email", Values: []string{"markelog@gmail.com"}},
|
|
{Name: "name", Values: []string{"Oleg"}},
|
|
{Name: "memberof", Values: []string{"admins"}},
|
|
},
|
|
}
|
|
result := ldap.SearchResult{Entries: []*ldap.Entry{&entry}}
|
|
conn.setSearchResult(&result)
|
|
|
|
conn.bindProvider = func(username, password string) error {
|
|
return nil
|
|
}
|
|
auth := &Auth{
|
|
server: &ServerConfig{
|
|
Attr: AttributeMap{
|
|
Username: "username",
|
|
Name: "name",
|
|
MemberOf: "memberof",
|
|
},
|
|
SearchBaseDNs: []string{"BaseDNHere"},
|
|
},
|
|
conn: conn,
|
|
log: log.New("test-logger"),
|
|
}
|
|
|
|
err := auth.Login(scenario.loginUserQuery)
|
|
|
|
Convey("it should not return error", func() {
|
|
So(err, ShouldBeNil)
|
|
})
|
|
|
|
Convey("it should get user", func() {
|
|
So(scenario.loginUserQuery.User.Login, ShouldEqual, "markelog")
|
|
})
|
|
})
|
|
})
|
|
}
|