| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package ldap
- import (
- "testing"
- . "github.com/smartystreets/goconvey/convey"
- "gopkg.in/ldap.v3"
- "github.com/grafana/grafana/pkg/infra/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")
- })
- })
- })
- }
|