summaryrefslogtreecommitdiff
path: root/internal/authentication/ldap_user_provider_test.go
diff options
context:
space:
mode:
authorJames Elliott <james-d-elliott@users.noreply.github.com>2022-05-02 11:51:38 +1000
committerGitHub <noreply@github.com>2022-05-02 11:51:38 +1000
commitc7d992f341487c6c84c7d12c847abee241f8feb5 (patch)
tree1ec15e70e28ac0fa9ffeea86723dc0cef26a58c3 /internal/authentication/ldap_user_provider_test.go
parent668ad38f20861eef58b01ed46e271998e04430f7 (diff)
fix(authentication): follow ldap referrals (#3251)
This ensures we are able to follow referrals for LDAP password modify operations when permit_referrals is true. Co-authored-by: Amir Zarrinkafsh <nightah@me.com>
Diffstat (limited to 'internal/authentication/ldap_user_provider_test.go')
-rw-r--r--internal/authentication/ldap_user_provider_test.go61
1 files changed, 26 insertions, 35 deletions
diff --git a/internal/authentication/ldap_user_provider_test.go b/internal/authentication/ldap_user_provider_test.go
index 00eb5fd6f..95d4c63d1 100644
--- a/internal/authentication/ldap_user_provider_test.go
+++ b/internal/authentication/ldap_user_provider_test.go
@@ -24,7 +24,9 @@ func TestShouldCreateRawConnectionWhenSchemeIsLDAP(t *testing.T) {
ldapClient := newLDAPUserProvider(
schema.LDAPAuthenticationBackendConfiguration{
- URL: "ldap://127.0.0.1:389",
+ URL: "ldap://127.0.0.1:389",
+ User: "cn=admin,dc=example,dc=com",
+ Password: "password",
},
false,
nil,
@@ -40,7 +42,7 @@ func TestShouldCreateRawConnectionWhenSchemeIsLDAP(t *testing.T) {
gomock.InOrder(dialURL, connBind)
- _, err := ldapClient.connect("cn=admin,dc=example,dc=com", "password")
+ _, err := ldapClient.connect()
require.NoError(t, err)
}
@@ -54,7 +56,9 @@ func TestShouldCreateTLSConnectionWhenSchemeIsLDAPS(t *testing.T) {
ldapClient := newLDAPUserProvider(
schema.LDAPAuthenticationBackendConfiguration{
- URL: "ldaps://127.0.0.1:389",
+ URL: "ldaps://127.0.0.1:389",
+ User: "cn=admin,dc=example,dc=com",
+ Password: "password",
},
false,
nil,
@@ -70,41 +74,28 @@ func TestShouldCreateTLSConnectionWhenSchemeIsLDAPS(t *testing.T) {
gomock.InOrder(dialURL, connBind)
- _, err := ldapClient.connect("cn=admin,dc=example,dc=com", "password")
+ _, err := ldapClient.connect()
require.NoError(t, err)
}
func TestEscapeSpecialCharsFromUserInput(t *testing.T) {
- ctrl := gomock.NewController(t)
- defer ctrl.Finish()
-
- mockFactory := NewMockLDAPConnectionFactory(ctrl)
-
- ldapClient := newLDAPUserProvider(
- schema.LDAPAuthenticationBackendConfiguration{
- URL: "ldaps://127.0.0.1:389",
- },
- false,
- nil,
- mockFactory)
-
// No escape.
- assert.Equal(t, "xyz", ldapClient.ldapEscape("xyz"))
+ assert.Equal(t, "xyz", ldapEscape("xyz"))
// Escape.
- assert.Equal(t, "test\\,abc", ldapClient.ldapEscape("test,abc"))
- assert.Equal(t, "test\\5cabc", ldapClient.ldapEscape("test\\abc"))
- assert.Equal(t, "test\\2aabc", ldapClient.ldapEscape("test*abc"))
- assert.Equal(t, "test \\28abc\\29", ldapClient.ldapEscape("test (abc)"))
- assert.Equal(t, "test\\#abc", ldapClient.ldapEscape("test#abc"))
- assert.Equal(t, "test\\+abc", ldapClient.ldapEscape("test+abc"))
- assert.Equal(t, "test\\<abc", ldapClient.ldapEscape("test<abc"))
- assert.Equal(t, "test\\>abc", ldapClient.ldapEscape("test>abc"))
- assert.Equal(t, "test\\;abc", ldapClient.ldapEscape("test;abc"))
- assert.Equal(t, "test\\\"abc", ldapClient.ldapEscape("test\"abc"))
- assert.Equal(t, "test\\=abc", ldapClient.ldapEscape("test=abc"))
- assert.Equal(t, "test\\,\\5c\\28abc\\29", ldapClient.ldapEscape("test,\\(abc)"))
+ assert.Equal(t, "test\\,abc", ldapEscape("test,abc"))
+ assert.Equal(t, "test\\5cabc", ldapEscape("test\\abc"))
+ assert.Equal(t, "test\\2aabc", ldapEscape("test*abc"))
+ assert.Equal(t, "test \\28abc\\29", ldapEscape("test (abc)"))
+ assert.Equal(t, "test\\#abc", ldapEscape("test#abc"))
+ assert.Equal(t, "test\\+abc", ldapEscape("test+abc"))
+ assert.Equal(t, "test\\<abc", ldapEscape("test<abc"))
+ assert.Equal(t, "test\\>abc", ldapEscape("test>abc"))
+ assert.Equal(t, "test\\;abc", ldapEscape("test;abc"))
+ assert.Equal(t, "test\\\"abc", ldapEscape("test\"abc"))
+ assert.Equal(t, "test\\=abc", ldapEscape("test=abc"))
+ assert.Equal(t, "test\\,\\5c\\28abc\\29", ldapEscape("test,\\(abc)"))
}
func TestEscapeSpecialCharsInGroupsFilter(t *testing.T) {
@@ -306,7 +297,7 @@ func TestShouldReturnCheckServerConnectError(t *testing.T) {
Return(mockConn, errors.New("could not connect"))
err := ldapClient.StartupCheck()
- assert.EqualError(t, err, "could not connect")
+ assert.EqualError(t, err, "dial failed with error: could not connect")
assert.False(t, ldapClient.supportExtensionPasswdModify)
}
@@ -1105,7 +1096,7 @@ func TestShouldCheckInvalidUserPassword(t *testing.T) {
valid, err := ldapClient.CheckUserPassword("john", "password")
assert.False(t, valid)
- require.EqualError(t, err, "authentication failed. Cause: invalid username or password")
+ require.EqualError(t, err, "authentication failed. Cause: bind failed with error: invalid username or password")
}
func TestShouldCallStartTLSWhenEnabled(t *testing.T) {
@@ -1215,8 +1206,8 @@ func TestShouldParseDynamicConfiguration(t *testing.T) {
assert.True(t, ldapClient.usersFilterReplacementInput)
- assert.Equal(t, "(&(|(uid={input})(mail={input})(displayName={input}))(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!pwdLastSet=0))", ldapClient.configuration.UsersFilter)
- assert.Equal(t, "(&(|(member={dn})(member={input})(member={username}))(objectClass=group))", ldapClient.configuration.GroupsFilter)
+ assert.Equal(t, "(&(|(uid={input})(mail={input})(displayName={input}))(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!pwdLastSet=0))", ldapClient.config.UsersFilter)
+ assert.Equal(t, "(&(|(member={dn})(member={input})(member={username}))(objectClass=group))", ldapClient.config.GroupsFilter)
assert.Equal(t, "ou=users,dc=example,dc=com", ldapClient.usersBaseDN)
assert.Equal(t, "ou=groups,dc=example,dc=com", ldapClient.groupsBaseDN)
}
@@ -1342,5 +1333,5 @@ func TestShouldReturnLDAPSAlreadySecuredWhenStartTLSAttempted(t *testing.T) {
gomock.InOrder(dialURL, connStartTLS)
_, err := ldapClient.GetDetails("john")
- assert.EqualError(t, err, "LDAP Result Code 200 \"Network Error\": ldap: already encrypted")
+ assert.EqualError(t, err, "starttls failed with error: LDAP Result Code 200 \"Network Error\": ldap: already encrypted")
}