From 310d1ed6855f46767cd66beeafbb8afa0865be68 Mon Sep 17 00:00:00 2001 From: Bryce Kahle Date: Tue, 10 Oct 2017 13:54:33 -0400 Subject: [PATCH] Only mix in SMTP to instance config --- api/api_test.go | 2 +- api/middleware.go | 6 +++--- api/payments_test.go | 6 +++--- api/utils_test.go | 2 +- cmd/serve_cmd.go | 2 +- conf/configuration.go | 17 +++++++---------- mailer/mailer.go | 8 ++------ mailer/mailer_test.go | 6 +++--- 8 files changed, 21 insertions(+), 28 deletions(-) diff --git a/api/api_test.go b/api/api_test.go index 0ac9256..ad1ed2c 100644 --- a/api/api_test.go +++ b/api/api_test.go @@ -20,7 +20,7 @@ func TestTraceWrapper(t *testing.T) { config.Payment.Stripe.Enabled = true config.Payment.Stripe.SecretKey = "secret" - ctx, err := WithInstanceConfig(context.Background(), globalConfig, config, "") + ctx, err := WithInstanceConfig(context.Background(), globalConfig.SMTP, config, "") require.NoError(t, err) api := NewAPIWithVersion(ctx, globalConfig, nil, "") diff --git a/api/middleware.go b/api/middleware.go index 47493c0..f5b3647 100644 --- a/api/middleware.go +++ b/api/middleware.go @@ -100,7 +100,7 @@ func (api *API) loadInstanceConfig(w http.ResponseWriter, r *http.Request) (cont } logEntrySetField(r, "site_url", config.SiteURL) - ctx, err = WithInstanceConfig(ctx, api.config, config, instanceID) + ctx, err = WithInstanceConfig(ctx, api.config.SMTP, config, instanceID) if err != nil { return nil, internalServerError("Error loading instance config").WithInternalError(err) } @@ -108,12 +108,12 @@ func (api *API) loadInstanceConfig(w http.ResponseWriter, r *http.Request) (cont return ctx, nil } -func WithInstanceConfig(ctx context.Context, global *conf.GlobalConfiguration, config *conf.Configuration, instanceID string) (context.Context, error) { +func WithInstanceConfig(ctx context.Context, smtp conf.SMTPConfiguration, config *conf.Configuration, instanceID string) (context.Context, error) { ctx = gcontext.WithInstanceID(ctx, instanceID) ctx = gcontext.WithConfig(ctx, config) ctx = gcontext.WithCoupons(ctx, config) - mailer := mailer.NewMailer(&global.SMTP, config) + mailer := mailer.NewMailer(smtp, config) ctx = gcontext.WithMailer(ctx, mailer) store, err := assetstores.NewStore(config) diff --git a/api/payments_test.go b/api/payments_test.go index 64bda23..d0d13bc 100644 --- a/api/payments_test.go +++ b/api/payments_test.go @@ -234,7 +234,7 @@ func TestPaymentsRefund(t *testing.T) { globalConfig := new(conf.GlobalConfiguration) provider := &memProvider{name: payments.StripeProvider} - ctx, err := WithInstanceConfig(context.Background(), globalConfig, test.Config, "") + ctx, err := WithInstanceConfig(context.Background(), globalConfig.SMTP, test.Config, "") require.NoError(t, err) ctx = gcontext.WithPaymentProviders(ctx, map[string]payments.Provider{payments.StripeProvider: provider}) @@ -465,7 +465,7 @@ func TestPaymentPreauthorize(t *testing.T) { req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") globalConfig := new(conf.GlobalConfiguration) - ctx, err := WithInstanceConfig(context.Background(), globalConfig, test.Config, "") + ctx, err := WithInstanceConfig(context.Background(), globalConfig.SMTP, test.Config, "") require.NoError(t, err) NewAPIWithVersion(ctx, test.GlobalConfig, test.DB, "").handler.ServeHTTP(recorder, req) @@ -506,7 +506,7 @@ func TestPaymentPreauthorize(t *testing.T) { req.Header.Set("Content-Type", "application/json") globalConfig := new(conf.GlobalConfiguration) - ctx, err := WithInstanceConfig(context.Background(), globalConfig, test.Config, "") + ctx, err := WithInstanceConfig(context.Background(), globalConfig.SMTP, test.Config, "") require.NoError(t, err) NewAPIWithVersion(ctx, test.GlobalConfig, test.DB, "").handler.ServeHTTP(recorder, req) diff --git a/api/utils_test.go b/api/utils_test.go index acf1753..6568c74 100644 --- a/api/utils_test.go +++ b/api/utils_test.go @@ -349,7 +349,7 @@ func (r *RouteTest) TestEndpoint(method string, url string, body io.Reader, toke require.NoError(r.T, signHTTPRequest(req, token, r.Config.JWT.Secret)) } globalConfig := new(conf.GlobalConfiguration) - ctx, err := WithInstanceConfig(context.Background(), globalConfig, r.Config, "") + ctx, err := WithInstanceConfig(context.Background(), globalConfig.SMTP, r.Config, "") require.NoError(r.T, err) NewAPIWithVersion(ctx, r.GlobalConfig, r.DB, "").handler.ServeHTTP(recorder, req) diff --git a/cmd/serve_cmd.go b/cmd/serve_cmd.go index 326bce9..e7ba741 100644 --- a/cmd/serve_cmd.go +++ b/cmd/serve_cmd.go @@ -32,7 +32,7 @@ func serve(globalConfig *conf.GlobalConfiguration, config *conf.Configuration) { } defer bgDB.Close() - ctx, err := api.WithInstanceConfig(context.Background(), globalConfig, config, "") + ctx, err := api.WithInstanceConfig(context.Background(), globalConfig.SMTP, config, "") if err != nil { logrus.Fatalf("Error loading instance config: %+v", err) } diff --git a/conf/configuration.go b/conf/configuration.go index 685154e..8b19247 100644 --- a/conf/configuration.go +++ b/conf/configuration.go @@ -2,7 +2,6 @@ package conf import ( "os" - "time" "github.com/joho/godotenv" "github.com/kelseyhightower/envconfig" @@ -25,12 +24,11 @@ type JWTConfiguration struct { } type SMTPConfiguration struct { - MaxFrequency time.Duration `json:"max_frequency" split_words:"true"` - Host string `json:"host"` - Port int `json:"port" default:"587"` - User string `json:"user"` - Pass string `json:"pass"` - AdminEmail string `json:"admin_email" split_words:"true"` + Host string `json:"host"` + Port int `json:"port" default:"587"` + User string `json:"user"` + Pass string `json:"pass"` + AdminEmail string `json:"admin_email" split_words:"true"` } // GlobalConfiguration holds all the global configuration for gocommerce @@ -61,9 +59,8 @@ type Configuration struct { SMTP SMTPConfiguration `json:"smtp"` Mailer struct { - AdminEmail string `json:"admin_email" split_words:"true"` - Subjects EmailContentConfiguration `json:"subjects"` - Templates EmailContentConfiguration `json:"templates"` + Subjects EmailContentConfiguration `json:"subjects"` + Templates EmailContentConfiguration `json:"templates"` } `json:"mailer"` Payment struct { diff --git a/mailer/mailer.go b/mailer/mailer.go index 6e14bc0..ddf31e7 100644 --- a/mailer/mailer.go +++ b/mailer/mailer.go @@ -28,7 +28,7 @@ type MailSubjects struct { } // NewMailer returns a new authlify mailer -func NewMailer(smtp *conf.SMTPConfiguration, instanceConfig *conf.Configuration) Mailer { +func NewMailer(smtp conf.SMTPConfiguration, instanceConfig *conf.Configuration) Mailer { if smtp.Host == "" && instanceConfig.SMTP.Host == "" { return newNoopMailer() } @@ -53,10 +53,6 @@ func NewMailer(smtp *conf.SMTPConfiguration, instanceConfig *conf.Configuration) if smtpAdminEmail == "" { smtpAdminEmail = smtp.AdminEmail } - smtpMaxFrequency := instanceConfig.SMTP.MaxFrequency - if smtpMaxFrequency == 0 { - smtpMaxFrequency = smtp.MaxFrequency - } return &mailer{ Config: instanceConfig, @@ -140,7 +136,7 @@ const defaultReceivedTemplate = `

Order Received From {{ .Order.Email }}

// OrderReceivedMail sends a notification to the shop admin func (m *mailer) OrderReceivedMail(transaction *models.Transaction) error { return m.TemplateMailer.Mail( - m.Config.Mailer.AdminEmail, + m.TemplateMailer.From, withDefault(m.Config.Mailer.Subjects.OrderReceived, "Order Received From {{ .Order.Email }}"), m.Config.Mailer.Templates.OrderReceived, defaultReceivedTemplate, diff --git a/mailer/mailer_test.go b/mailer/mailer_test.go index 29ab8b0..6a09d24 100644 --- a/mailer/mailer_test.go +++ b/mailer/mailer_test.go @@ -8,19 +8,19 @@ import ( ) func TestNoopMailer(t *testing.T) { - smtp := &conf.SMTPConfiguration{} + smtp := conf.SMTPConfiguration{} conf := &conf.Configuration{} m := NewMailer(smtp, conf) assert.IsType(t, &noopMailer{}, m) } func TestTemplateMailer(t *testing.T) { - smtp := &conf.SMTPConfiguration{ + smtp := conf.SMTPConfiguration{ Host: "localhost", Port: 25, } conf := &conf.Configuration{} - conf.Mailer.AdminEmail = "test@example.com" + conf.SMTP.AdminEmail = "test@example.com" m := NewMailer(smtp, conf) assert.IsType(t, &mailer{}, m) }