package app import ( "os" "path/filepath" "testing" ) func TestExampleConfigAndSecrets(t *testing.T) { c, err := Load("../config.example.yml") if err != nil { t.Fatal(err) } if c.Email.Driver != "resend" || c.Messaging.Driver != "NATS" || c.Database.Driver != "mongodb" { t.Fatal("wrong driver configuration") } data, err := os.ReadFile("../config.example.yml") if err != nil { t.Fatal(err) } path := filepath.Join(t.TempDir(), "config.yml") if err = os.WriteFile(path, append(data, []byte("\n---\nunexpected: document\n")...), 0600); err != nil { t.Fatal(err) } if _, err = Load(path); err == nil { t.Fatal("extra YAML document accepted") } } func TestPlaintextConfigAndIncompleteTLS(t *testing.T) { c, err := Load("../config.example.yml") if err != nil { t.Fatal(err) } options, err := serverOptions(c) if err != nil || len(options) != 0 { t.Fatal("plain gRPC must not require TLS material") } data, err := os.ReadFile("../config.example.yml") if err != nil { t.Fatal(err) } for _, partial := range []string{"\ntls_cert: missing.crt\n", "\ntls_key: missing.key\n"} { path := filepath.Join(t.TempDir(), "config.yml") if err := os.WriteFile(path, append(data, []byte(partial)...), 0600); err != nil { t.Fatal(err) } if _, err := Load(path); err == nil { t.Fatal("incomplete TLS configuration accepted") } } if _, err := serverOptions(Config{TLSCert: "missing.crt", TLSKey: "missing.key"}); err == nil { t.Fatal("bad explicit certificate accepted") } }