56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
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")
|
|
}
|
|
}
|