fix: preserve OA configuration during database startup
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"io"
|
||||
"kra/internal/config"
|
||||
"kra/internal/integration/storage"
|
||||
"log/slog"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDatabaseStartupPreservesBusinessOAConfiguration(t *testing.T) {
|
||||
runtime := config.NewStore(&config.Config{BusinessOA: &config.BusinessOA{URL: "http://oa.test", Key: "test-only-key"}, Data: &config.Data{Database: &config.Database{Driver: "sqlite", Source: filepath.Join(t.TempDir(), "startup.db")}}, Admin: &config.Admin{Local: &config.Local{StorePath: filepath.Join(t.TempDir(), "uploads")}}})
|
||||
manager, err := storage.NewFileStorage(runtime)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, cleanup, err := NewData(runtime, slog.New(slog.NewTextHandler(io.Discard, nil)), manager, testCatalog())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer cleanup()
|
||||
actual := runtime.Snapshot().BusinessOA
|
||||
if actual == nil || actual.URL != "http://oa.test" || actual.Key != "test-only-key" {
|
||||
t.Fatal("database startup discarded the OA service configuration")
|
||||
}
|
||||
}
|
||||
@@ -299,7 +299,12 @@ func NewData(runtime *config.Store, appLogger *slog.Logger, storageManager *stor
|
||||
}
|
||||
admin.Storage = storageConfig
|
||||
admin.Email = emailConfig
|
||||
runtime.Replace(&config.Config{Server: runtime.Server(), Data: c, Admin: admin})
|
||||
next := runtime.Snapshot()
|
||||
if next == nil {
|
||||
next = &config.Config{}
|
||||
}
|
||||
next.Data, next.Admin = c, admin
|
||||
runtime.Replace(next)
|
||||
if err = d.loadIntegrationRuntime(db); err != nil {
|
||||
return nil, nil, fmt.Errorf("load integration runtime: %w", err)
|
||||
}
|
||||
|
||||
@@ -195,7 +195,8 @@ func (d *Data) InitializeDatabase(ctx context.Context, input *system.DatabaseCon
|
||||
currentAdmin.JWT.SigningKey = signingKey
|
||||
currentAdmin.Storage = storageConfig
|
||||
currentAdmin.Email = emailConfig
|
||||
d.runtime.Replace(&configpkg.Config{Server: current.Server, Data: currentData, Admin: currentAdmin})
|
||||
current.Data, current.Admin = currentData, currentAdmin
|
||||
d.runtime.Replace(current)
|
||||
if d.integrations != nil {
|
||||
d.integrations.Replace(integrationConfigs)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user