48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package auth
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/Silo-Server/silo-server/internal/models"
|
|
)
|
|
|
|
func TestNormalizePermissions_DeduplicatesAndSorts(t *testing.T) {
|
|
got, err := NormalizePermissions([]string{
|
|
" metadata_curation ",
|
|
"metadata_curation",
|
|
"",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NormalizePermissions returned error: %v", err)
|
|
}
|
|
want := []string{"metadata_curation"}
|
|
if !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("permissions = %#v, want %#v", got, want)
|
|
}
|
|
}
|
|
|
|
func TestNormalizePermissions_RejectsUnknownPermission(t *testing.T) {
|
|
if _, err := NormalizePermissions([]string{"server_owner"}); err == nil {
|
|
t.Fatal("expected unknown permission error")
|
|
}
|
|
}
|
|
|
|
func TestHasEffectivePermission_AdminImpliesMetadataCuration(t *testing.T) {
|
|
user := &models.User{Role: "admin", Enabled: true}
|
|
if !HasEffectivePermission(user, PermissionMetadataCuration) {
|
|
t.Fatal("admin should have metadata curation")
|
|
}
|
|
}
|
|
|
|
func TestHasEffectivePermission_UserRequiresAssignedPermission(t *testing.T) {
|
|
user := &models.User{Role: "user", Enabled: true}
|
|
if HasEffectivePermission(user, PermissionMetadataCuration) {
|
|
t.Fatal("plain user should not have metadata curation")
|
|
}
|
|
user.Permissions = []string{"metadata_curation"}
|
|
if !HasEffectivePermission(user, PermissionMetadataCuration) {
|
|
t.Fatal("assigned user should have metadata curation")
|
|
}
|
|
}
|