Ctrl K
ComunidadGuías…

ocis-pkg/ldap/filter_test.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
			}
		})
	}
}