66 lines
2.1 KiB
Go
66 lines
2.1 KiB
Go
package service
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"infinite-canvas/backend/internal/model"
|
|
"infinite-canvas/backend/internal/repository"
|
|
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestRuntimePolicyDefaultsAndSelfUseModeValidate(t *testing.T) {
|
|
if err := validateRuntimePolicy(defaultRuntimePolicy()); err != nil {
|
|
t.Fatalf("default runtime policy error = %v", err)
|
|
}
|
|
selfUse := selfUseRuntimePolicy()
|
|
if err := validateRuntimePolicy(selfUse); err != nil {
|
|
t.Fatalf("self-use runtime policy error = %v", err)
|
|
}
|
|
if selfUse.Task.WorkerConcurrency != 999 || selfUse.Resource.ResourceUploadMB != 999 {
|
|
t.Fatalf("self-use maxima = worker %d, upload %d", selfUse.Task.WorkerConcurrency, selfUse.Resource.ResourceUploadMB)
|
|
}
|
|
}
|
|
|
|
func TestRuntimePolicyRejectsSingleFileAboveAccountCapacity(t *testing.T) {
|
|
policy := defaultRuntimePolicy()
|
|
policy.Resource.StoredFileGB = 1
|
|
policy.Resource.ResourceUploadMB = 999
|
|
if err := validateRuntimePolicy(policy); err != nil {
|
|
t.Fatalf("999MB should fit in 1GB: %v", err)
|
|
}
|
|
policy.Resource.StoredFileGB = 0
|
|
if err := validateRuntimePolicy(policy); err == nil {
|
|
t.Fatal("zero account capacity should be rejected")
|
|
}
|
|
}
|
|
|
|
func TestRuntimePolicySaveAndResetTakeEffectImmediately(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := db.AutoMigrate(&model.SystemSetting{}, &model.AdminAuditEvent{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
svc := New(repository.New(db), t.TempDir())
|
|
actor := &model.User{ID: "admin", Role: model.UserRoleAdmin}
|
|
policy := defaultRuntimePolicy()
|
|
policy.Task.ActiveTaskLimit = 17
|
|
if _, err := svc.UpdateRuntimePolicySetting(actor, policy); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
effective, err := svc.RuntimePolicy()
|
|
if err != nil || effective.Task.ActiveTaskLimit != 17 {
|
|
t.Fatalf("effective active task limit = %d, error = %v", effective.Task.ActiveTaskLimit, err)
|
|
}
|
|
if _, err := svc.ResetRuntimePolicySetting(actor); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
effective, err = svc.RuntimePolicy()
|
|
if err != nil || effective.Task.ActiveTaskLimit != 5 {
|
|
t.Fatalf("reset active task limit = %d, error = %v", effective.Task.ActiveTaskLimit, err)
|
|
}
|
|
}
|