47 lines
1.5 KiB
Go
47 lines
1.5 KiB
Go
package config
|
|
|
|
import "testing"
|
|
|
|
func TestEmailConfigResolvedProvider(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
cfg EmailConfig
|
|
want string
|
|
}{
|
|
{"explicit", EmailConfig{Provider: "noop", CloudflareAPIToken: "token"}, "noop"},
|
|
{"cloudflare", EmailConfig{CloudflareAccountID: "account"}, "cloudflare"},
|
|
{"postmark", EmailConfig{PostmarkToken: "token"}, "postmark"},
|
|
{"smtp", EmailConfig{SMTPHost: "localhost"}, "smtp"},
|
|
{"noop", EmailConfig{}, "noop"},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
if got := test.cfg.ResolvedProvider(); got != test.want {
|
|
t.Fatalf("ResolvedProvider() = %q, want %q", got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestLoadCloudflareEmailEnvironment(t *testing.T) {
|
|
t.Setenv("CAIRNQUIRE_EMAIL_PROVIDER", "cloudflare")
|
|
t.Setenv("CAIRNQUIRE_EMAIL_CLOUDFLARE_ACCOUNT_ID", "account")
|
|
t.Setenv("CAIRNQUIRE_EMAIL_CLOUDFLARE_API_TOKEN", "token")
|
|
t.Setenv("CAIRNQUIRE_EMAIL_CLOUDFLARE_API_URL", "https://api.example.test")
|
|
t.Setenv("CAIRNQUIRE_EMAIL_FROM", "notifications@example.com")
|
|
|
|
cfg, err := Load()
|
|
if err != nil {
|
|
t.Fatalf("Load: %v", err)
|
|
}
|
|
if cfg.Email.ResolvedProvider() != "cloudflare" {
|
|
t.Fatalf("provider = %q", cfg.Email.ResolvedProvider())
|
|
}
|
|
if cfg.Email.CloudflareAccountID != "account" || cfg.Email.CloudflareAPIToken != "token" {
|
|
t.Fatalf("cloudflare config = %#v", cfg.Email)
|
|
}
|
|
if cfg.Email.CloudflareAPIURL != "https://api.example.test" || cfg.Email.From != "notifications@example.com" {
|
|
t.Fatalf("cloudflare endpoint/from = %#v", cfg.Email)
|
|
}
|
|
}
|