* feat(canvas): 绘图工具 - 支持自定义 tldraw License Key * docs(canvas): 绘图工具 - 添加 License Key 页面截图
82 lines
2.4 KiB
Go
82 lines
2.4 KiB
Go
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
|
|
"infinite-canvas/backend/internal/model"
|
|
"infinite-canvas/backend/internal/repository"
|
|
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestDefaultDrawingEngineUsesExcalidraw(t *testing.T) {
|
|
setting := defaultDrawingEngineSetting()
|
|
if setting.DefaultEngine != DrawingEngineExcalidraw {
|
|
t.Fatalf("default engine = %q, want %q", setting.DefaultEngine, DrawingEngineExcalidraw)
|
|
}
|
|
}
|
|
|
|
func TestValidateDrawingEngineSetting(t *testing.T) {
|
|
for _, engine := range []string{DrawingEngineTldraw, DrawingEngineExcalidraw} {
|
|
if err := validateDrawingEngineSetting(DrawingEngineSetting{DefaultEngine: engine}); err != nil {
|
|
t.Fatalf("validate engine %q: %v", engine, err)
|
|
}
|
|
}
|
|
if err := validateDrawingEngineSetting(DrawingEngineSetting{DefaultEngine: "unknown"}); err == nil {
|
|
t.Fatal("validate unknown engine = nil")
|
|
}
|
|
}
|
|
|
|
func TestUpdateDrawingEngineSettingKeepsDefaultEngineAndStoresTldrawLicenseSeparately(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if sqlDB, err := db.DB(); err == nil {
|
|
sqlDB.SetMaxOpenConns(1)
|
|
}
|
|
if err := db.AutoMigrate(&model.SystemSetting{}, &model.AdminAuditEvent{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
repo := repository.New(db)
|
|
svc := New(repo, t.TempDir())
|
|
actor := &model.User{ID: "admin-1", Role: model.UserRoleAdmin}
|
|
|
|
setting, err := svc.UpdateDrawingEngineSetting(actor, DrawingEngineSetting{
|
|
DefaultEngine: DrawingEngineExcalidraw,
|
|
TldrawLicenseKey: "license-key-for-test",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if setting.DefaultEngine != DrawingEngineExcalidraw {
|
|
t.Fatalf("default engine = %q, want %q", setting.DefaultEngine, DrawingEngineExcalidraw)
|
|
}
|
|
if setting.TldrawLicenseKey != "license-key-for-test" {
|
|
t.Fatalf("license key = %q", setting.TldrawLicenseKey)
|
|
}
|
|
|
|
licenseSetting, err := repo.SystemSetting(tldrawLicenseKeySettingKey)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var savedLicenseKey string
|
|
if err := json.Unmarshal([]byte(licenseSetting.ValueJSON), &savedLicenseKey); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if savedLicenseKey != "license-key-for-test" {
|
|
t.Fatalf("stored license key = %q", savedLicenseKey)
|
|
}
|
|
|
|
engineSetting, err := repo.SystemSetting(drawingEngineSettingKey)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if strings.Contains(engineSetting.ValueJSON, "license-key-for-test") {
|
|
t.Fatalf("drawing engine setting must not contain the license key: %s", engineSetting.ValueJSON)
|
|
}
|
|
}
|