Files
ttstd-infinite-canvas/backend/internal/app/drawing_engine_test.go

82 lines
2.4 KiB
Go

package app
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)
}
}