|
|
|
@ -8,17 +8,16 @@ import ( |
|
|
|
|
"github.com/grafana/grafana/pkg/services/ldap" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/multildap" |
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var errTest = errors.New("test error") |
|
|
|
|
|
|
|
|
|
func TestLDAPLogin(t *testing.T) { |
|
|
|
|
Convey("Login using ldap", t, func() { |
|
|
|
|
Convey("Given ldap enabled and no server configured", func() { |
|
|
|
|
func TestLoginUsingLDAP(t *testing.T) { |
|
|
|
|
LDAPLoginScenario(t, "When LDAP enabled and no server configured", func(sc *LDAPLoginScenarioContext) { |
|
|
|
|
setting.LDAPEnabled = true |
|
|
|
|
|
|
|
|
|
LDAPLoginScenario("When login", func(sc *LDAPLoginScenarioContext) { |
|
|
|
|
sc.withLoginResult(false) |
|
|
|
|
getLDAPConfig = func(*setting.Cfg) (*ldap.Config, error) { |
|
|
|
|
config := &ldap.Config{ |
|
|
|
@ -29,44 +28,21 @@ func TestLDAPLogin(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
enabled, err := loginUsingLDAP(sc.loginUserQuery) |
|
|
|
|
require.EqualError(t, err, errTest.Error()) |
|
|
|
|
|
|
|
|
|
Convey("it should return true", func() { |
|
|
|
|
So(enabled, ShouldBeTrue) |
|
|
|
|
assert.True(t, enabled) |
|
|
|
|
assert.True(t, sc.LDAPAuthenticatorMock.loginCalled) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("it should return no LDAP servers error", func() { |
|
|
|
|
So(err, ShouldEqual, errTest) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("it should not call ldap login", func() { |
|
|
|
|
So(sc.LDAPAuthenticatorMock.loginCalled, ShouldBeTrue) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("Given ldap disabled", func() { |
|
|
|
|
LDAPLoginScenario(t, "When LDAP disabled", func(sc *LDAPLoginScenarioContext) { |
|
|
|
|
setting.LDAPEnabled = false |
|
|
|
|
|
|
|
|
|
LDAPLoginScenario("When login", func(sc *LDAPLoginScenarioContext) { |
|
|
|
|
sc.withLoginResult(false) |
|
|
|
|
enabled, err := loginUsingLDAP(&models.LoginUserQuery{ |
|
|
|
|
Username: "user", |
|
|
|
|
Password: "pwd", |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("it should return false", func() { |
|
|
|
|
So(enabled, ShouldBeFalse) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("it should not return error", func() { |
|
|
|
|
So(err, ShouldBeNil) |
|
|
|
|
}) |
|
|
|
|
enabled, err := loginUsingLDAP(sc.loginUserQuery) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
Convey("it should not call ldap login", func() { |
|
|
|
|
So(sc.LDAPAuthenticatorMock.loginCalled, ShouldBeFalse) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
assert.False(t, enabled) |
|
|
|
|
assert.False(t, sc.LDAPAuthenticatorMock.loginCalled) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -137,8 +113,10 @@ type LDAPLoginScenarioContext struct { |
|
|
|
|
|
|
|
|
|
type LDAPLoginScenarioFunc func(c *LDAPLoginScenarioContext) |
|
|
|
|
|
|
|
|
|
func LDAPLoginScenario(desc string, fn LDAPLoginScenarioFunc) { |
|
|
|
|
Convey(desc, func() { |
|
|
|
|
func LDAPLoginScenario(t *testing.T, desc string, fn LDAPLoginScenarioFunc) { |
|
|
|
|
t.Helper() |
|
|
|
|
|
|
|
|
|
t.Run(desc, func(t *testing.T) { |
|
|
|
|
mock := &mockAuth{} |
|
|
|
|
|
|
|
|
|
sc := &LDAPLoginScenarioContext{ |
|
|
|
@ -152,10 +130,12 @@ func LDAPLoginScenario(desc string, fn LDAPLoginScenarioFunc) { |
|
|
|
|
|
|
|
|
|
origNewLDAP := newLDAP |
|
|
|
|
origGetLDAPConfig := getLDAPConfig |
|
|
|
|
defer func() { |
|
|
|
|
origLDAPEnabled := setting.LDAPEnabled |
|
|
|
|
t.Cleanup(func() { |
|
|
|
|
newLDAP = origNewLDAP |
|
|
|
|
getLDAPConfig = origGetLDAPConfig |
|
|
|
|
}() |
|
|
|
|
setting.LDAPEnabled = origLDAPEnabled |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
getLDAPConfig = func(*setting.Cfg) (*ldap.Config, error) { |
|
|
|
|
config := &ldap.Config{ |
|
|
|
|