67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.mchus.pro/mchus/quoteforge/internal/config"
|
|
)
|
|
|
|
func TestMigrateConfigFileToRuntimeShapeDropsDeprecatedSections(t *testing.T) {
|
|
t.Helper()
|
|
dir := t.TempDir()
|
|
path := filepath.Join(dir, "config.yaml")
|
|
|
|
legacy := `server:
|
|
host: "0.0.0.0"
|
|
port: 9191
|
|
database:
|
|
host: "legacy-db"
|
|
port: 3306
|
|
name: "RFQ_LOG"
|
|
user: "old"
|
|
password: "REDACTED_TEST_PASSWORD"
|
|
pricing:
|
|
default_method: "median"
|
|
logging:
|
|
level: "debug"
|
|
format: "text"
|
|
output: "stdout"
|
|
`
|
|
if err := os.WriteFile(path, []byte(legacy), 0644); err != nil {
|
|
t.Fatalf("write legacy config: %v", err)
|
|
}
|
|
|
|
cfg, err := config.Load(path)
|
|
if err != nil {
|
|
t.Fatalf("load legacy config: %v", err)
|
|
}
|
|
setConfigDefaults(cfg)
|
|
if err := migrateConfigFileToRuntimeShape(path, cfg); err != nil {
|
|
t.Fatalf("migrate config: %v", err)
|
|
}
|
|
|
|
got, err := os.ReadFile(path)
|
|
if err != nil {
|
|
t.Fatalf("read migrated config: %v", err)
|
|
}
|
|
text := string(got)
|
|
if strings.Contains(text, "database:") {
|
|
t.Fatalf("migrated config still contains deprecated database section:\n%s", text)
|
|
}
|
|
if strings.Contains(text, "pricing:") {
|
|
t.Fatalf("migrated config still contains deprecated pricing section:\n%s", text)
|
|
}
|
|
if !strings.Contains(text, "server:") || !strings.Contains(text, "logging:") {
|
|
t.Fatalf("migrated config missing required sections:\n%s", text)
|
|
}
|
|
if !strings.Contains(text, "port: 9191") {
|
|
t.Fatalf("migrated config did not preserve server port:\n%s", text)
|
|
}
|
|
if !strings.Contains(text, "level: debug") {
|
|
t.Fatalf("migrated config did not preserve logging level:\n%s", text)
|
|
}
|
|
}
|