kra-new/internal/config/document_test.go

40 lines
1003 B
Go

package config
import (
"os"
"path/filepath"
"strings"
"testing"
)
func TestDocumentPreservesUnknownKeysAndUpdatesHTTPPort(t *testing.T) {
path := filepath.Join(t.TempDir(), "config.yaml")
input := "# keep this comment\nserver:\n http:\n addr: 127.0.0.1:8000\ncustom:\n enabled: true\n"
if err := os.WriteFile(path, []byte(input), 0o600); err != nil {
t.Fatal(err)
}
document, err := OpenDocument(path)
if err != nil {
t.Fatal(err)
}
if err = document.SetServerHTTPPort(9000); err != nil {
t.Fatal(err)
}
if err = document.Set("admin", map[string]any{"router_prefix": "/api"}); err != nil {
t.Fatal(err)
}
if err = document.Save(); err != nil {
t.Fatal(err)
}
loaded, err := os.ReadFile(path)
if err != nil {
t.Fatal(err)
}
text := string(loaded)
for _, want := range []string{"127.0.0.1:9000", "custom:", "enabled: true", "admin:", "router_prefix: /api"} {
if !strings.Contains(text, want) {
t.Fatalf("saved document missing %q:\n%s", want, text)
}
}
}