ocis-pkg/ldap/filter_test.go
Rama master · réplica de lectura del repositorio original.
package ldap
import (
"testing"
)
func TestEnhanceFilterWithMasterID(t *testing.T) {
tests := []struct {
name string
filter string
masterID string
memberAttr string
guestAttr string
expectedFilter string
}{
{
name: "empty masterID",
filter: "(ownCloudMemberOf=instance-1)",
masterID: "",
memberAttr: "ownCloudMemberOf",
guestAttr: "ownCloudGuestOf",
expectedFilter: "(ownCloudMemberOf=instance-1)",
},
{
name: "no attributes configured",
filter: "(uid=testuser)",
masterID: "0000-0000-000-0000",
memberAttr: "",
guestAttr: "",
expectedFilter: "(uid=testuser)",
},
{
name: "both member and guest attributes",
filter: "(ownCloudMemberOf=instance-1)",
masterID: "0000-0000-000-0000",
memberAttr: "ownCloudMemberOf",
guestAttr: "ownCloudGuestOf",
expectedFilter: "(|(ownCloudMemberOf=instance-1)(|(ownCloudMemberOf=0000-0000-000-0000)(ownCloudGuestOf=0000-0000-000-0000)))",
},
{
name: "only member attribute",
filter: "(ownCloudMemberOf=instance-1)",
masterID: "0000-0000-000-0000",
memberAttr: "ownCloudMemberOf",
guestAttr: "",
expectedFilter: "(|(ownCloudMemberOf=instance-1)(ownCloudMemberOf=0000-0000-000-0000))",
},
{
name: "only guest attribute",
filter: "(ownCloudGuestOf=instance-1)",
masterID: "0000-0000-000-0000",
memberAttr: "",
guestAttr: "ownCloudGuestOf",
expectedFilter: "(|(ownCloudGuestOf=instance-1)(ownCloudGuestOf=0000-0000-000-0000))",
},
{
name: "empty existing filter stays unrestricted",
filter: "",
masterID: "0000-0000-000-0000",
memberAttr: "ownCloudMemberOf",
guestAttr: "ownCloudGuestOf",
expectedFilter: "",
},
{
name: "LDAP injection protection",
filter: "(ownCloudMemberOf=instance-1)",
masterID: "0000*)(uid=*",
memberAttr: "ownCloudMemberOf",
guestAttr: "",
expectedFilter: "(|(ownCloudMemberOf=instance-1)(ownCloudMemberOf=0000\\2a\\29\\28uid=\\2a))",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := EnhanceFilterWithMasterID(tt.filter, tt.masterID, tt.memberAttr, tt.guestAttr)
if result != tt.expectedFilter {
t.Errorf("EnhanceFilterWithMasterID() = %q, want %q", result, tt.expectedFilter)
}
})
}
}