57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package manage
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.az-it.net/az/morz-infoboard/server/backend/internal/store"
|
|
)
|
|
|
|
func TestCanDeleteMedia(t *testing.T) {
|
|
asset := &store.MediaAsset{TenantID: "t1", CreatedByUserID: "u1"}
|
|
|
|
tests := []struct {
|
|
name string
|
|
user *store.User
|
|
allowed bool
|
|
}{
|
|
{
|
|
name: "admin darf immer",
|
|
user: &store.User{Role: "admin", TenantID: "t2", ID: "x"},
|
|
allowed: true,
|
|
},
|
|
{
|
|
name: "screen_user eigener Tenant",
|
|
user: &store.User{Role: "screen_user", TenantID: "t1", ID: "x"},
|
|
allowed: true,
|
|
},
|
|
{
|
|
name: "screen_user fremder Tenant",
|
|
user: &store.User{Role: "screen_user", TenantID: "t2", ID: "x"},
|
|
allowed: false,
|
|
},
|
|
{
|
|
name: "restricted eigenes Medium",
|
|
user: &store.User{Role: "restricted", TenantID: "t1", ID: "u1"},
|
|
allowed: true,
|
|
},
|
|
{
|
|
name: "restricted fremdes Medium gleicher Tenant",
|
|
user: &store.User{Role: "restricted", TenantID: "t1", ID: "u2"},
|
|
allowed: false,
|
|
},
|
|
{
|
|
name: "restricted fremder Tenant",
|
|
user: &store.User{Role: "restricted", TenantID: "t2", ID: "u1"},
|
|
allowed: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := canDeleteMedia(tt.user, asset)
|
|
if got != tt.allowed {
|
|
t.Errorf("canDeleteMedia() = %v, want %v", got, tt.allowed)
|
|
}
|
|
})
|
|
}
|
|
}
|