You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudreve/inventory/share_test.go

45 lines
1.4 KiB

package inventory
import (
"testing"
"github.com/cloudreve/Cloudreve/v4/ent"
entuser "github.com/cloudreve/Cloudreve/v4/ent/user"
"github.com/cloudreve/Cloudreve/v4/inventory/types"
"github.com/cloudreve/Cloudreve/v4/pkg/boolset"
)
func TestIsValidShareChecksCurrentOwnerAccess(t *testing.T) {
tests := []struct {
name string
status entuser.Status
canShare bool
wantErr bool
}{
{name: "active owner with share permission", status: entuser.StatusActive, canShare: true},
{name: "active owner without share permission", status: entuser.StatusActive, wantErr: true},
{name: "manually banned owner", status: entuser.StatusManualBanned, canShare: true, wantErr: true},
{name: "system banned owner", status: entuser.StatusSysBanned, canShare: true, wantErr: true},
{name: "inactive owner", status: entuser.StatusInactive, canShare: true, wantErr: true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
permissions := &boolset.BooleanSet{}
boolset.Set(types.GroupPermissionShare, tt.canShare, permissions)
group := &ent.Group{Permissions: permissions}
owner := &ent.User{ID: 1, Status: tt.status}
owner.SetGroup(group)
file := &ent.File{OwnerID: owner.ID, FileChildren: 1}
share := &ent.Share{}
share.SetUser(owner)
share.SetFile(file)
err := IsValidShare(share)
if (err != nil) != tt.wantErr {
t.Fatalf("IsValidShare() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}