proxy-pool/internal/domain/authorization/authorization_test.go

45 lines
1.3 KiB
Go

package authorization
import "testing"
func TestAllowsHonorsExplicitPermissionsAndLegacyEmptySet(t *testing.T) {
t.Parallel()
tests := []struct {
name string
permissions []string
required string
want bool
}{
{name: "legacy empty set", required: AdminWrite, want: true},
{name: "matching permission", permissions: []string{AdminRead}, required: AdminRead, want: true},
{name: "different permission", permissions: []string{AdminRead}, required: AdminWrite, want: false},
{name: "global permission", permissions: []string{All}, required: DistributionExtract, want: true},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
t.Parallel()
if got := Allows(test.permissions, test.required); got != test.want {
t.Fatalf("Allows(%v, %q) = %t, want %t", test.permissions, test.required, got, test.want)
}
})
}
}
func TestValidateRejectsUnknownDuplicateAndMixedGlobalPermissions(t *testing.T) {
t.Parallel()
for _, permissions := range [][]string{
{"unknown"},
{AdminRead, AdminRead},
{All, AdminRead},
{" " + AdminRead},
} {
if err := Validate(permissions); err == nil {
t.Fatalf("Validate(%v) error = nil", permissions)
}
}
if err := Validate([]string{AdminRead, AdminWrite}); err != nil {
t.Fatalf("Validate(valid) error = %v", err)
}
}