LDAP Refactoring to support syncronizing more than one user at a time. (#16705)
* Feature: add cron setting for the ldap settings * Move ldap configuration read to special function * Introduce cron setting (no docs for it yet, pending approval) * Chore: duplicate ldap module as a service * Feature: implement active sync This is very early preliminary implementation of active sync. There is only one thing that's going right for this code - it works. Aside from that, there is no tests, error handling, docs, transactions, it's very much duplicative and etc. But this is the overall direction with architecture I'm going for * Chore: introduce login service * Chore: gradually switch to ldap service * Chore: use new approach for auth_proxy * Chore: use new approach along with refactoring * Chore: use new ldap interface for auth_proxy * Chore: improve auth_proxy and subsequently ldap * Chore: more of the refactoring bits * Chore: address comments from code review * Chore: more refactoring stuff * Chore: make linter happy * Chore: add cron dep for grafana enterprise * Chore: initialize config package var * Chore: disable gosec for now * Chore: update dependencies * Chore: remove unused module * Chore: address review comments * Chore: make linter happy
This commit is contained in:
@@ -5,16 +5,17 @@ import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/remotecache"
|
||||
"github.com/grafana/grafana/pkg/login"
|
||||
models "github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
"gopkg.in/macaron.v1"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/remotecache"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/ldap"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
type TestLDAP struct {
|
||||
login.ILdapAuther
|
||||
ldap.Auth
|
||||
ID int64
|
||||
syncCalled bool
|
||||
}
|
||||
@@ -62,13 +63,23 @@ func TestMiddlewareContext(t *testing.T) {
|
||||
|
||||
Convey("LDAP", func() {
|
||||
Convey("gets data from the LDAP", func() {
|
||||
login.LdapCfg = login.LdapConfig{
|
||||
Servers: []*login.LdapServerConf{
|
||||
{},
|
||||
},
|
||||
isLDAPEnabled = func() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
setting.LdapEnabled = true
|
||||
readLDAPConfig = func() *ldap.Config {
|
||||
config := &ldap.Config{
|
||||
Servers: []*ldap.ServerConfig{
|
||||
{},
|
||||
},
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
||||
defer func() {
|
||||
isLDAPEnabled = ldap.IsEnabled
|
||||
readLDAPConfig = ldap.ReadConfig
|
||||
}()
|
||||
|
||||
store := remotecache.NewFakeStore(t)
|
||||
|
||||
@@ -82,7 +93,7 @@ func TestMiddlewareContext(t *testing.T) {
|
||||
ID: 42,
|
||||
}
|
||||
|
||||
auth.LDAP = func(server *login.LdapServerConf) login.ILdapAuther {
|
||||
auth.LDAP = func(server *ldap.ServerConfig) ldap.IAuth {
|
||||
return stub
|
||||
}
|
||||
|
||||
@@ -94,7 +105,21 @@ func TestMiddlewareContext(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("gets nice error if ldap is enabled but not configured", func() {
|
||||
setting.LdapEnabled = false
|
||||
isLDAPEnabled = func() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
readLDAPConfig = func() *ldap.Config {
|
||||
config := &ldap.Config{
|
||||
Servers: []*ldap.ServerConfig{},
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
||||
defer func() {
|
||||
isLDAPEnabled = ldap.IsEnabled
|
||||
readLDAPConfig = ldap.ReadConfig
|
||||
}()
|
||||
|
||||
store := remotecache.NewFakeStore(t)
|
||||
|
||||
@@ -108,13 +133,14 @@ func TestMiddlewareContext(t *testing.T) {
|
||||
ID: 42,
|
||||
}
|
||||
|
||||
auth.LDAP = func(server *login.LdapServerConf) login.ILdapAuther {
|
||||
auth.LDAP = func(server *ldap.ServerConfig) ldap.IAuth {
|
||||
return stub
|
||||
}
|
||||
|
||||
id, err := auth.GetUserID()
|
||||
|
||||
So(err, ShouldNotBeNil)
|
||||
So(err.Error(), ShouldContainSubstring, "Failed to sync user")
|
||||
So(id, ShouldNotEqual, 42)
|
||||
So(stub.syncCalled, ShouldEqual, false)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user