From 0065d313ba00788dd71c395aef926398c91e0044 Mon Sep 17 00:00:00 2001 From: Bryce Kahle Date: Mon, 12 Feb 2018 12:37:46 -0500 Subject: [PATCH 1/2] Flip email provider flag to a disabled flag. Defaults to false (enabled). --- api/admin_test.go | 4 ++-- api/api.go | 5 ----- api/api_test.go | 2 +- api/instance_test.go | 6 +++--- api/middleware.go | 2 +- api/settings.go | 2 +- api/settings_test.go | 2 +- conf/configuration.go | 2 +- 8 files changed, 10 insertions(+), 15 deletions(-) diff --git a/api/admin_test.go b/api/admin_test.go index cff650719..865a22c92 100644 --- a/api/admin_test.go +++ b/api/admin_test.go @@ -44,7 +44,7 @@ func TestAdmin(t *testing.T) { func (ts *AdminTestSuite) SetupTest() { models.TruncateAll(ts.API.db) - ts.Config.External.Email.Enabled = true + ts.Config.External.Email.Disabled = false ts.token = ts.makeSuperAdmin("test@example.com") } @@ -444,7 +444,7 @@ func (ts *AdminTestSuite) TestAdminUserCreateWithDisabledEmailLogin() { req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", ts.token)) - ts.Config.External.Email.Enabled = false + ts.Config.External.Email.Disabled = true ts.API.handler.ServeHTTP(w, req) require.Equal(ts.T(), http.StatusBadRequest, w.Code) diff --git a/api/api.go b/api/api.go index 98c9ef04f..551292e4c 100644 --- a/api/api.go +++ b/api/api.go @@ -207,11 +207,6 @@ func (a *API) getConfig(ctx context.Context) *conf.Configuration { if err := mergo.MergeWithOverwrite(&extConfig, config.External); err != nil { return nil } - // mergo only assigns zero values on destination - // See https://github.com/imdario/mergo/issues/24 - if !config.External.Email.Enabled { - extConfig.Email.Enabled = false - } config.External = extConfig smtpConfig := (*a.config).SMTP diff --git a/api/api_test.go b/api/api_test.go index 086d8a940..bbfb69111 100644 --- a/api/api_test.go +++ b/api/api_test.go @@ -96,7 +96,7 @@ func TestEmailEnabledByDefault(t *testing.T) { api, _, err := setupAPIForTest() require.NoError(t, err) - require.True(t, api.config.External.Email.Enabled) + require.False(t, api.config.External.Email.Disabled) } const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" diff --git a/api/instance_test.go b/api/instance_test.go index d4faa4399..102f513cc 100644 --- a/api/instance_test.go +++ b/api/instance_test.go @@ -144,7 +144,7 @@ func (ts *InstanceTestSuite) TestUpdate_DisableEmail() { BaseConfig: &conf.Configuration{ External: conf.ProviderConfiguration{ Email: conf.EmailProviderConfiguration{ - Enabled: true, + Disabled: false, }, }, }, @@ -156,7 +156,7 @@ func (ts *InstanceTestSuite) TestUpdate_DisableEmail() { "config": &conf.Configuration{ External: conf.ProviderConfiguration{ Email: conf.EmailProviderConfiguration{ - Enabled: false, + Disabled: true, }, }, }, @@ -172,5 +172,5 @@ func (ts *InstanceTestSuite) TestUpdate_DisableEmail() { i, err := models.GetInstanceByUUID(ts.API.db, testUUID) require.NoError(ts.T(), err) - require.False(ts.T(), i.BaseConfig.External.Email.Enabled) + require.True(ts.T(), i.BaseConfig.External.Email.Disabled) } diff --git a/api/middleware.go b/api/middleware.go index da951cb34..3c9e74b59 100644 --- a/api/middleware.go +++ b/api/middleware.go @@ -147,7 +147,7 @@ func (a *API) requireEmailProvider(w http.ResponseWriter, req *http.Request) (co ctx := req.Context() config := a.getConfig(ctx) - if !config.External.Email.Enabled { + if config.External.Email.Disabled { return nil, badRequestError("Unsupported email provider") } diff --git a/api/settings.go b/api/settings.go index 462aad3b8..4b3a3dfa8 100644 --- a/api/settings.go +++ b/api/settings.go @@ -27,7 +27,7 @@ func (a *API) Settings(w http.ResponseWriter, r *http.Request) error { GitLab: config.External.Gitlab.Enabled, Google: config.External.Google.Enabled, Facebook: config.External.Facebook.Enabled, - Email: config.External.Email.Enabled, + Email: !config.External.Email.Disabled, }, DisableSignup: config.DisableSignup, Autoconfirm: config.Mailer.Autoconfirm, diff --git a/api/settings_test.go b/api/settings_test.go index aeeb867e5..803c966ff 100644 --- a/api/settings_test.go +++ b/api/settings_test.go @@ -37,7 +37,7 @@ func TestSettings_EmailDisabled(t *testing.T) { api, config, instanceID, err := setupAPIForTestForInstance() require.NoError(t, err) - config.External.Email.Enabled = false + config.External.Email.Disabled = true // Setup request req := httptest.NewRequest(http.MethodGet, "http://localhost/settings", nil) diff --git a/conf/configuration.go b/conf/configuration.go index 81117bee5..e7c712f07 100644 --- a/conf/configuration.go +++ b/conf/configuration.go @@ -22,7 +22,7 @@ type OAuthProviderConfiguration struct { } type EmailProviderConfiguration struct { - Enabled bool `json:"enabled" default:"true"` + Disabled bool `json:"enabled"` } // DBConfiguration holds all the database related configuration. From da87e6ac3b9eaef60fbc77ad725330d25decd1b5 Mon Sep 17 00:00:00 2001 From: Bryce Kahle Date: Mon, 12 Feb 2018 12:41:19 -0500 Subject: [PATCH 2/2] Fix json field name --- conf/configuration.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/configuration.go b/conf/configuration.go index e7c712f07..0ebb87ba1 100644 --- a/conf/configuration.go +++ b/conf/configuration.go @@ -22,7 +22,7 @@ type OAuthProviderConfiguration struct { } type EmailProviderConfiguration struct { - Disabled bool `json:"enabled"` + Disabled bool `json:"disabled"` } // DBConfiguration holds all the database related configuration.