40 lines
1003 B
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)
|
|
}
|
|
}
|
|
}
|