package config import ( "os" "path/filepath" "strings" "testing" ) func TestValidateDefaultOK(t *testing.T) { t.Parallel() cfg := Default() if err := cfg.Validate(); err != nil { t.Fatal(err) } } func TestValidateRejectsMaxBodyBytesTooLarge(t *testing.T) { t.Parallel() cfg := Default() cfg.Limits.MaxBodyBytes = MaxBodyBytesCap + 1 err := cfg.Validate() if err == nil { t.Fatal("expected error") } if !strings.Contains(err.Error(), "max_body_bytes") { t.Fatalf("unexpected error: %v", err) } } func TestLoadAndValidate(t *testing.T) { t.Parallel() dir := t.TempDir() path := filepath.Join(dir, "config.yaml") body := "listen: \"127.0.0.1:0\"\ndata_dir: \"" + filepath.ToSlash(dir) + "\"\n" if err := os.WriteFile(path, []byte(body), 0o644); err != nil { t.Fatal(err) } cfg, err := Load(path) if err != nil { t.Fatal(err) } if err := cfg.Validate(); err != nil { t.Fatal(err) } if cfg.Listen != "127.0.0.1:0" { t.Fatalf("listen=%q", cfg.Listen) } } func TestValidateTrustedProxies(t *testing.T) { t.Parallel() cfg := Default() cfg.TrustedProxies = []string{"not-a-cidr"} if err := cfg.Validate(); err == nil { t.Fatal("expected error") } cfg.TrustedProxies = []string{"127.0.0.1/32"} if err := cfg.Validate(); err != nil { t.Fatal(err) } }