summaryrefslogtreecommitdiff
path: root/internal/configuration/validator/authentication_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/configuration/validator/authentication_test.go')
-rw-r--r--internal/configuration/validator/authentication_test.go507
1 files changed, 180 insertions, 327 deletions
diff --git a/internal/configuration/validator/authentication_test.go b/internal/configuration/validator/authentication_test.go
index a606348ce..b329cef63 100644
--- a/internal/configuration/validator/authentication_test.go
+++ b/internal/configuration/validator/authentication_test.go
@@ -577,7 +577,7 @@ func (suite *LDAPAuthenticationBackendSuite) SetupTest() {
suite.config.LDAP.User = testLDAPUser
suite.config.LDAP.Password = testLDAPPassword
suite.config.LDAP.BaseDN = testLDAPBaseDN
- suite.config.LDAP.UsernameAttribute = "uid"
+ suite.config.LDAP.Attributes.Username = "uid"
suite.config.LDAP.UsersFilter = "({username_attribute}={input})"
suite.config.LDAP.GroupsFilter = "(cn={input})"
}
@@ -591,12 +591,12 @@ func (suite *LDAPAuthenticationBackendSuite) TestShouldValidateCompleteConfigura
func (suite *LDAPAuthenticationBackendSuite) TestShouldValidateDefaultImplementationAndUsernameAttribute() {
suite.config.LDAP.Implementation = ""
- suite.config.LDAP.UsernameAttribute = ""
+ suite.config.LDAP.Attributes.Username = ""
ValidateAuthenticationBackend(&suite.config, suite.validator)
suite.Equal(schema.LDAPImplementationCustom, suite.config.LDAP.Implementation)
- suite.Equal(suite.config.LDAP.UsernameAttribute, schema.DefaultLDAPAuthenticationBackendConfigurationImplementationCustom.UsernameAttribute)
+ suite.Equal(suite.config.LDAP.Attributes.Username, schema.DefaultLDAPAuthenticationBackendConfigurationImplementationCustom.Attributes.Username)
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
}
@@ -743,7 +743,7 @@ func (suite *LDAPAuthenticationBackendSuite) TestShouldRaiseOnEmptyUsersFilter()
}
func (suite *LDAPAuthenticationBackendSuite) TestShouldNotRaiseOnEmptyUsernameAttribute() {
- suite.config.LDAP.UsernameAttribute = ""
+ suite.config.LDAP.Attributes.Username = ""
ValidateAuthenticationBackend(&suite.config, suite.validator)
@@ -793,7 +793,7 @@ func (suite *LDAPAuthenticationBackendSuite) TestShouldSetDefaultGroupNameAttrib
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal("cn", suite.config.LDAP.GroupNameAttribute)
+ suite.Equal("cn", suite.config.LDAP.Attributes.GroupName)
}
func (suite *LDAPAuthenticationBackendSuite) TestShouldSetDefaultMailAttribute() {
@@ -802,7 +802,7 @@ func (suite *LDAPAuthenticationBackendSuite) TestShouldSetDefaultMailAttribute()
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal("mail", suite.config.LDAP.MailAttribute)
+ suite.Equal("mail", suite.config.LDAP.Attributes.Mail)
}
func (suite *LDAPAuthenticationBackendSuite) TestShouldSetDefaultDisplayNameAttribute() {
@@ -811,7 +811,7 @@ func (suite *LDAPAuthenticationBackendSuite) TestShouldSetDefaultDisplayNameAttr
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal("displayName", suite.config.LDAP.DisplayNameAttribute)
+ suite.Equal("displayName", suite.config.LDAP.Attributes.DisplayName)
}
func (suite *LDAPAuthenticationBackendSuite) TestShouldSetDefaultRefreshInterval() {
@@ -890,6 +890,64 @@ func (suite *LDAPAuthenticationBackendSuite) TestShouldNotAllowSSL30() {
suite.EqualError(suite.validator.Errors()[0], "authentication_backend: ldap: tls: option 'minimum_version' is invalid: minimum version is TLS1.0 but SSL3.0 was configured")
}
+func (suite *LDAPAuthenticationBackendSuite) TestShouldErrorOnBadSearchMode() {
+ suite.config.LDAP.GroupSearchMode = "memberOF"
+
+ ValidateAuthenticationBackend(&suite.config, suite.validator)
+
+ suite.Len(suite.validator.Warnings(), 0)
+ suite.Require().Len(suite.validator.Errors(), 1)
+
+ suite.EqualError(suite.validator.Errors()[0], "authentication_backend: ldap: option 'group_search_mode' must be one of 'filter' or 'memberof' but it's configured as 'memberOF'")
+}
+
+func (suite *LDAPAuthenticationBackendSuite) TestShouldNoErrorOnPlaceholderSearchMode() {
+ suite.config.LDAP.GroupSearchMode = memberof
+ suite.config.LDAP.GroupsFilter = filterMemberOfRDN
+ suite.config.LDAP.Attributes.MemberOf = memberOf
+
+ ValidateAuthenticationBackend(&suite.config, suite.validator)
+
+ suite.Len(suite.validator.Warnings(), 0)
+ suite.Len(suite.validator.Errors(), 0)
+}
+
+func (suite *LDAPAuthenticationBackendSuite) TestShouldErrorOnMissingPlaceholderSearchMode() {
+ suite.config.LDAP.GroupSearchMode = memberof
+
+ ValidateAuthenticationBackend(&suite.config, suite.validator)
+
+ suite.Len(suite.validator.Warnings(), 0)
+ suite.Require().Len(suite.validator.Errors(), 1)
+
+ suite.EqualError(suite.validator.Errors()[0], "authentication_backend: ldap: option 'groups_filter' must contain one of the '{memberof:rdn}' or '{memberof:dn}' placeholders when using a group_search_mode of 'memberof' but they're absent")
+}
+
+func (suite *LDAPAuthenticationBackendSuite) TestShouldErrorOnMissingDistinguishedNameDN() {
+ suite.config.LDAP.Attributes.DistinguishedName = ""
+ suite.config.LDAP.GroupsFilter = "(|({memberof:dn}))"
+
+ ValidateAuthenticationBackend(&suite.config, suite.validator)
+
+ suite.Len(suite.validator.Warnings(), 0)
+ suite.Require().Len(suite.validator.Errors(), 2)
+
+ suite.EqualError(suite.validator.Errors()[0], "authentication_backend: ldap: attributes: option 'distinguished_name' must be provided when using the '{memberof:dn}' placeholder but it's absent")
+ suite.EqualError(suite.validator.Errors()[1], "authentication_backend: ldap: attributes: option 'member_of' must be provided when using the '{memberof:rdn}' or '{memberof:dn}' placeholder but it's absent")
+}
+
+func (suite *LDAPAuthenticationBackendSuite) TestShouldErrorOnMissingMemberOfRDN() {
+ suite.config.LDAP.Attributes.DistinguishedName = ""
+ suite.config.LDAP.GroupsFilter = filterMemberOfRDN
+
+ ValidateAuthenticationBackend(&suite.config, suite.validator)
+
+ suite.Len(suite.validator.Warnings(), 0)
+ suite.Require().Len(suite.validator.Errors(), 1)
+
+ suite.EqualError(suite.validator.Errors()[0], "authentication_backend: ldap: attributes: option 'member_of' must be provided when using the '{memberof:rdn}' or '{memberof:dn}' placeholder but it's absent")
+}
+
func (suite *LDAPAuthenticationBackendSuite) TestShouldNotAllowTLSVerMinGreaterThanVerMax() {
suite.config.LDAP.TLS = &schema.TLSConfig{
MinimumVersion: schema.TLSVersion{Value: tls.VersionTLS13},
@@ -909,9 +967,7 @@ func TestLDAPAuthenticationBackend(t *testing.T) {
}
type ActiveDirectoryAuthenticationBackendSuite struct {
- suite.Suite
- config schema.AuthenticationBackend
- validator *schema.StructValidator
+ LDAPImplementationSuite
}
func (suite *ActiveDirectoryAuthenticationBackendSuite) SetupTest() {
@@ -932,81 +988,30 @@ func (suite *ActiveDirectoryAuthenticationBackendSuite) TestShouldSetActiveDirec
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.Timeout,
- suite.config.LDAP.Timeout)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.EqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory)
}
func (suite *ActiveDirectoryAuthenticationBackendSuite) TestShouldOnlySetDefaultsIfNotManuallyConfigured() {
suite.config.LDAP.Timeout = time.Second * 2
suite.config.LDAP.UsersFilter = "(&({username_attribute}={input})(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))"
- suite.config.LDAP.UsernameAttribute = "cn"
- suite.config.LDAP.MailAttribute = "userPrincipalName"
- suite.config.LDAP.DisplayNameAttribute = "name"
+ suite.config.LDAP.Attributes.Username = "cn"
+ suite.config.LDAP.Attributes.Mail = "userPrincipalName"
+ suite.config.LDAP.Attributes.DisplayName = "name"
suite.config.LDAP.GroupsFilter = "(&(member={dn})(objectClass=group)(objectCategory=group))"
- suite.config.LDAP.GroupNameAttribute = "distinguishedName"
+ suite.config.LDAP.Attributes.GroupName = "distinguishedName"
suite.config.LDAP.AdditionalUsersDN = "OU=test"
suite.config.LDAP.AdditionalGroupsDN = "OU=grps"
+ suite.config.LDAP.Attributes.MemberOf = member
+ suite.config.LDAP.GroupSearchMode = memberof
+ suite.config.LDAP.Attributes.DistinguishedName = "objectGUID"
ValidateAuthenticationBackend(&suite.config, suite.validator)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.NotEqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory)
+
+ suite.Equal(member, suite.config.LDAP.Attributes.MemberOf)
+ suite.Equal("objectGUID", suite.config.LDAP.Attributes.DistinguishedName)
+ suite.Equal(memberof, suite.config.LDAP.GroupSearchMode)
}
func (suite *ActiveDirectoryAuthenticationBackendSuite) TestShouldRaiseErrorOnInvalidURLWithHTTP() {
@@ -1023,9 +1028,7 @@ func TestActiveDirectoryAuthenticationBackend(t *testing.T) {
}
type RFC2307bisAuthenticationBackendSuite struct {
- suite.Suite
- config schema.AuthenticationBackend
- validator *schema.StructValidator
+ LDAPImplementationSuite
}
func (suite *RFC2307bisAuthenticationBackendSuite) SetupTest() {
@@ -1046,78 +1049,29 @@ func (suite *RFC2307bisAuthenticationBackendSuite) TestShouldSetDefaults() {
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.Timeout,
- suite.config.LDAP.Timeout)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.EqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis)
}
func (suite *RFC2307bisAuthenticationBackendSuite) TestShouldOnlySetDefaultsIfNotManuallyConfigured() {
suite.config.LDAP.Timeout = time.Second * 2
suite.config.LDAP.UsersFilter = "(&({username_attribute}={input})(objectClass=Person))"
- suite.config.LDAP.UsernameAttribute = "o"
- suite.config.LDAP.MailAttribute = "Email"
- suite.config.LDAP.DisplayNameAttribute = "Given"
+ suite.config.LDAP.Attributes.Username = "o"
+ suite.config.LDAP.Attributes.Mail = "Email"
+ suite.config.LDAP.Attributes.DisplayName = "Given"
suite.config.LDAP.GroupsFilter = "(&(member={dn})(objectClass=posixGroup)(objectClass=top))"
- suite.config.LDAP.GroupNameAttribute = "gid"
+ suite.config.LDAP.Attributes.GroupName = "gid"
+ suite.config.LDAP.Attributes.MemberOf = member
suite.config.LDAP.AdditionalUsersDN = "OU=users,OU=OpenLDAP"
suite.config.LDAP.AdditionalGroupsDN = "OU=groups,OU=OpenLDAP"
+ suite.config.LDAP.GroupSearchMode = memberof
ValidateAuthenticationBackend(&suite.config, suite.validator)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.NotEqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis)
+
+ suite.Equal(member, suite.config.LDAP.Attributes.MemberOf)
+ suite.Equal("", suite.config.LDAP.Attributes.DistinguishedName)
+ suite.Equal(schema.LDAPGroupSearchModeMemberOf, suite.config.LDAP.GroupSearchMode)
}
func TestRFC2307bisAuthenticationBackend(t *testing.T) {
@@ -1125,9 +1079,7 @@ func TestRFC2307bisAuthenticationBackend(t *testing.T) {
}
type FreeIPAAuthenticationBackendSuite struct {
- suite.Suite
- config schema.AuthenticationBackend
- validator *schema.StructValidator
+ LDAPImplementationSuite
}
func (suite *FreeIPAAuthenticationBackendSuite) SetupTest() {
@@ -1148,75 +1100,29 @@ func (suite *FreeIPAAuthenticationBackendSuite) TestShouldSetDefaults() {
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.Timeout,
- suite.config.LDAP.Timeout)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.EqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA)
}
func (suite *FreeIPAAuthenticationBackendSuite) TestShouldOnlySetDefaultsIfNotManuallyConfigured() {
suite.config.LDAP.Timeout = time.Second * 2
suite.config.LDAP.UsersFilter = "(&({username_attribute}={input})(objectClass=person)(!(nsAccountLock=TRUE)))"
- suite.config.LDAP.UsernameAttribute = "dn"
- suite.config.LDAP.MailAttribute = "email"
- suite.config.LDAP.DisplayNameAttribute = "gecos"
+ suite.config.LDAP.Attributes.Username = "dn"
+ suite.config.LDAP.Attributes.Mail = "email"
+ suite.config.LDAP.Attributes.DisplayName = "gecos"
suite.config.LDAP.GroupsFilter = "(&(member={dn})(objectClass=posixgroup))"
- suite.config.LDAP.GroupNameAttribute = "groupName"
+ suite.config.LDAP.GroupSearchMode = schema.LDAPGroupSearchModeMemberOf
+ suite.config.LDAP.Attributes.GroupName = "groupName"
+ suite.config.LDAP.Attributes.MemberOf = member
suite.config.LDAP.AdditionalUsersDN = "OU=people"
suite.config.LDAP.AdditionalGroupsDN = "OU=grp"
ValidateAuthenticationBackend(&suite.config, suite.validator)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.NotEqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA)
+
+ suite.Equal(member, suite.config.LDAP.Attributes.MemberOf)
+ suite.Equal("", suite.config.LDAP.Attributes.DistinguishedName)
+ suite.Equal(schema.LDAPGroupSearchModeMemberOf, suite.config.LDAP.GroupSearchMode)
}
func TestFreeIPAAuthenticationBackend(t *testing.T) {
@@ -1224,9 +1130,7 @@ func TestFreeIPAAuthenticationBackend(t *testing.T) {
}
type LLDAPAuthenticationBackendSuite struct {
- suite.Suite
- config schema.AuthenticationBackend
- validator *schema.StructValidator
+ LDAPImplementationSuite
}
func (suite *LLDAPAuthenticationBackendSuite) SetupTest() {
@@ -1247,78 +1151,29 @@ func (suite *LLDAPAuthenticationBackendSuite) TestShouldSetDefaults() {
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.Timeout,
- suite.config.LDAP.Timeout)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.EqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP)
}
func (suite *LLDAPAuthenticationBackendSuite) TestShouldOnlySetDefaultsIfNotManuallyConfigured() {
suite.config.LDAP.Timeout = time.Second * 2
suite.config.LDAP.UsersFilter = "(&({username_attribute}={input})(objectClass=Person)(!(nsAccountLock=TRUE)))"
- suite.config.LDAP.UsernameAttribute = "username"
- suite.config.LDAP.MailAttribute = "m"
- suite.config.LDAP.DisplayNameAttribute = "fn"
+ suite.config.LDAP.Attributes.Username = "username"
+ suite.config.LDAP.Attributes.Mail = "m"
+ suite.config.LDAP.Attributes.DisplayName = "fn"
+ suite.config.LDAP.Attributes.MemberOf = member
suite.config.LDAP.GroupsFilter = "(&(member={dn})(!(objectClass=posixGroup)))"
- suite.config.LDAP.GroupNameAttribute = "grpz"
+ suite.config.LDAP.Attributes.GroupName = "grpz"
suite.config.LDAP.AdditionalUsersDN = "OU=no"
suite.config.LDAP.AdditionalGroupsDN = "OU=yes"
+ suite.config.LDAP.GroupSearchMode = memberof
ValidateAuthenticationBackend(&suite.config, suite.validator)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.NotEqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP)
+
+ suite.Equal(member, suite.config.LDAP.Attributes.MemberOf)
+ suite.Equal("", suite.config.LDAP.Attributes.DistinguishedName)
+ suite.Equal(schema.LDAPGroupSearchModeMemberOf, suite.config.LDAP.GroupSearchMode)
}
func TestLLDAPAuthenticationBackend(t *testing.T) {
@@ -1326,9 +1181,7 @@ func TestLLDAPAuthenticationBackend(t *testing.T) {
}
type GLAuthAuthenticationBackendSuite struct {
- suite.Suite
- config schema.AuthenticationBackend
- validator *schema.StructValidator
+ LDAPImplementationSuite
}
func (suite *GLAuthAuthenticationBackendSuite) SetupTest() {
@@ -1349,80 +1202,80 @@ func (suite *GLAuthAuthenticationBackendSuite) TestShouldSetDefaults() {
suite.Len(suite.validator.Warnings(), 0)
suite.Len(suite.validator.Errors(), 0)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.Timeout,
- suite.config.LDAP.Timeout)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.Equal(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.EqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth)
}
func (suite *GLAuthAuthenticationBackendSuite) TestShouldOnlySetDefaultsIfNotManuallyConfigured() {
suite.config.LDAP.Timeout = time.Second * 2
suite.config.LDAP.UsersFilter = "(&({username_attribute}={input})(objectClass=Person)(!(accountStatus=inactive)))"
- suite.config.LDAP.UsernameAttribute = "description"
- suite.config.LDAP.MailAttribute = "sender"
- suite.config.LDAP.DisplayNameAttribute = "given"
+ suite.config.LDAP.Attributes.Username = "description"
+ suite.config.LDAP.Attributes.Mail = "sender"
+ suite.config.LDAP.Attributes.DisplayName = "given"
suite.config.LDAP.GroupsFilter = "(&(member={dn})(objectClass=posixGroup))"
- suite.config.LDAP.GroupNameAttribute = "grp"
+ suite.config.LDAP.Attributes.GroupName = "grp"
suite.config.LDAP.AdditionalUsersDN = "OU=users,OU=GlAuth"
suite.config.LDAP.AdditionalGroupsDN = "OU=groups,OU=GLAuth"
+ suite.config.LDAP.Attributes.MemberOf = member
+ suite.config.LDAP.GroupSearchMode = memberof
ValidateAuthenticationBackend(&suite.config, suite.validator)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.AdditionalUsersDN,
- suite.config.LDAP.AdditionalUsersDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.AdditionalGroupsDN,
- suite.config.LDAP.AdditionalGroupsDN)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.Timeout,
- suite.config.LDAP.Timeout)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.UsersFilter,
- suite.config.LDAP.UsersFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.UsernameAttribute,
- suite.config.LDAP.UsernameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.DisplayNameAttribute,
- suite.config.LDAP.DisplayNameAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.MailAttribute,
- suite.config.LDAP.MailAttribute)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.GroupsFilter,
- suite.config.LDAP.GroupsFilter)
- suite.NotEqual(
- schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth.GroupNameAttribute,
- suite.config.LDAP.GroupNameAttribute)
+ suite.NotEqualImplementationDefaults(schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth)
+
+ suite.Equal(member, suite.config.LDAP.Attributes.MemberOf)
+ suite.Equal("", suite.config.LDAP.Attributes.DistinguishedName)
+ suite.Equal(schema.LDAPGroupSearchModeMemberOf, suite.config.LDAP.GroupSearchMode)
}
func TestGLAuthAuthenticationBackend(t *testing.T) {
suite.Run(t, new(GLAuthAuthenticationBackendSuite))
}
+
+type LDAPImplementationSuite struct {
+ suite.Suite
+ config schema.AuthenticationBackend
+ validator *schema.StructValidator
+}
+
+func (suite *LDAPImplementationSuite) EqualImplementationDefaults(expected schema.LDAPAuthenticationBackend) {
+ suite.Equal(expected.Timeout, suite.config.LDAP.Timeout)
+ suite.Equal(expected.AdditionalUsersDN, suite.config.LDAP.AdditionalUsersDN)
+ suite.Equal(expected.AdditionalGroupsDN, suite.config.LDAP.AdditionalGroupsDN)
+ suite.Equal(expected.UsersFilter, suite.config.LDAP.UsersFilter)
+ suite.Equal(expected.GroupsFilter, suite.config.LDAP.GroupsFilter)
+ suite.Equal(expected.GroupSearchMode, suite.config.LDAP.GroupSearchMode)
+
+ suite.Equal(expected.Attributes.DistinguishedName, suite.config.LDAP.Attributes.DistinguishedName)
+ suite.Equal(expected.Attributes.Username, suite.config.LDAP.Attributes.Username)
+ suite.Equal(expected.Attributes.DisplayName, suite.config.LDAP.Attributes.DisplayName)
+ suite.Equal(expected.Attributes.Mail, suite.config.LDAP.Attributes.Mail)
+ suite.Equal(expected.Attributes.MemberOf, suite.config.LDAP.Attributes.MemberOf)
+ suite.Equal(expected.Attributes.GroupName, suite.config.LDAP.Attributes.GroupName)
+}
+
+func (suite *LDAPImplementationSuite) NotEqualImplementationDefaults(expected schema.LDAPAuthenticationBackend) {
+ suite.NotEqual(expected.Timeout, suite.config.LDAP.Timeout)
+ suite.NotEqual(expected.UsersFilter, suite.config.LDAP.UsersFilter)
+ suite.NotEqual(expected.GroupsFilter, suite.config.LDAP.GroupsFilter)
+ suite.NotEqual(expected.GroupSearchMode, suite.config.LDAP.GroupSearchMode)
+ suite.NotEqual(expected.Attributes.Username, suite.config.LDAP.Attributes.Username)
+ suite.NotEqual(expected.Attributes.DisplayName, suite.config.LDAP.Attributes.DisplayName)
+ suite.NotEqual(expected.Attributes.Mail, suite.config.LDAP.Attributes.Mail)
+ suite.NotEqual(expected.Attributes.GroupName, suite.config.LDAP.Attributes.GroupName)
+
+ if expected.Attributes.DistinguishedName != "" {
+ suite.NotEqual(expected.Attributes.DistinguishedName, suite.config.LDAP.Attributes.DistinguishedName)
+ }
+
+ if expected.AdditionalUsersDN != "" {
+ suite.NotEqual(expected.AdditionalUsersDN, suite.config.LDAP.AdditionalUsersDN)
+ }
+
+ if expected.AdditionalGroupsDN != "" {
+ suite.NotEqual(expected.AdditionalGroupsDN, suite.config.LDAP.AdditionalGroupsDN)
+ }
+
+ if expected.Attributes.MemberOf != "" {
+ suite.NotEqual(expected.Attributes.MemberOf, suite.config.LDAP.Attributes.MemberOf)
+ }
+}