From 8e19ba029f889519d93cf272960dce858971106c Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 18 Oct 2017 15:36:43 -0700 Subject: Reduce utils.Cfg references (#7650) * app.UpdateConfig method * test fix * another test fix * the config override option as-was is just error prone, remove it for now * derp --- api4/apitestlib.go | 17 ++--- api4/brand.go | 4 +- api4/channel_test.go | 112 +++++++++++++++++++++---------- api4/command_help_test.go | 11 +-- api4/command_test.go | 97 +++++++++++++++------------ api4/context.go | 6 +- api4/elasticsearch.go | 2 +- api4/emoji.go | 12 ++-- api4/emoji_test.go | 44 ++++++------ api4/file.go | 12 ++-- api4/file_test.go | 55 ++++++++------- api4/oauth.go | 4 +- api4/oauth_test.go | 134 ++++++++++++++++++------------------- api4/openGraph.go | 2 +- api4/openGraph_test.go | 21 +++--- api4/plugin.go | 9 ++- api4/plugin_test.go | 19 +++--- api4/post_test.go | 34 +++++----- api4/system.go | 12 ++-- api4/system_test.go | 37 +++++------ api4/team_test.go | 46 ++++++------- api4/user.go | 24 +++---- api4/user_test.go | 166 +++++++++++++++++++++++----------------------- api4/webhook.go | 2 +- api4/webhook_test.go | 164 ++++++++++++++++++++++----------------------- api4/webrtc_test.go | 9 ++- 26 files changed, 555 insertions(+), 500 deletions(-) (limited to 'api4') diff --git a/api4/apitestlib.go b/api4/apitestlib.go index 4bd8276d5..3e093df56 100644 --- a/api4/apitestlib.go +++ b/api4/apitestlib.go @@ -81,27 +81,28 @@ func setupTestHelper(enterprise bool) *TestHelper { var options []app.Option if testStore != nil { options = append(options, app.StoreOverride(testStore)) - options = append(options, app.ConfigOverride(func(cfg *model.Config) { - cfg.ServiceSettings.ListenAddress = new(string) - *cfg.ServiceSettings.ListenAddress = ":0" - })) } th := &TestHelper{ App: app.New(options...), } - *utils.Cfg.TeamSettings.MaxUsersPerTeam = 50 - *utils.Cfg.RateLimitSettings.Enable = false - utils.Cfg.EmailSettings.SendEmailNotifications = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.MaxUsersPerTeam = 50 }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.RateLimitSettings.Enable = false }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.SendEmailNotifications = true }) utils.DisableDebugLogForTest() + prevListenAddress := *th.App.Config().ServiceSettings.ListenAddress + if testStore != nil { + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = ":0" }) + } th.App.StartServer() + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = prevListenAddress }) Init(th.App, th.App.Srv.Router, true) wsapi.Init(th.App, th.App.Srv.WebSocketRouter) utils.EnableDebugLogForTest() th.App.Srv.Store.MarkSystemRanUnitTests() - *utils.Cfg.TeamSettings.EnableOpenServer = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true }) utils.SetIsLicensed(enterprise) if enterprise { diff --git a/api4/brand.go b/api4/brand.go index 23bfc557d..ce9f32b6d 100644 --- a/api4/brand.go +++ b/api4/brand.go @@ -32,12 +32,12 @@ func getBrandImage(c *Context, w http.ResponseWriter, r *http.Request) { } func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) { - if r.ContentLength > *utils.Cfg.FileSettings.MaxFileSize { + if r.ContentLength > *c.App.Config().FileSettings.MaxFileSize { c.Err = model.NewAppError("uploadBrandImage", "api.admin.upload_brand_image.too_large.app_error", nil, "", http.StatusRequestEntityTooLarge) return } - if err := r.ParseMultipartForm(*utils.Cfg.FileSettings.MaxFileSize); err != nil { + if err := r.ParseMultipartForm(*c.App.Config().FileSettings.MaxFileSize); err != nil { c.Err = model.NewAppError("uploadBrandImage", "api.admin.upload_brand_image.parse.app_error", nil, "", http.StatusBadRequest) return } diff --git a/api4/channel_test.go b/api4/channel_test.go index 44f3a4ad7..af47aca95 100644 --- a/api4/channel_test.go +++ b/api4/channel_test.go @@ -83,17 +83,17 @@ func TestCreateChannel(t *testing.T) { // Check permissions with policy config changes isLicensed := utils.IsLicensed() license := utils.License() - restrictPublicChannel := *utils.Cfg.TeamSettings.RestrictPublicChannelCreation - restrictPrivateChannel := *utils.Cfg.TeamSettings.RestrictPrivateChannelCreation + restrictPublicChannel := *th.App.Config().TeamSettings.RestrictPublicChannelCreation + restrictPrivateChannel := *th.App.Config().TeamSettings.RestrictPrivateChannelCreation defer func() { - *utils.Cfg.TeamSettings.RestrictPublicChannelCreation = restrictPublicChannel - *utils.Cfg.TeamSettings.RestrictPrivateChannelCreation = restrictPrivateChannel + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPublicChannelCreation = restrictPublicChannel }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPrivateChannelCreation = restrictPrivateChannel }) utils.SetIsLicensed(isLicensed) utils.SetLicense(license) utils.SetDefaultRolesBasedOnConfig() }() - *utils.Cfg.TeamSettings.RestrictPublicChannelCreation = model.PERMISSIONS_ALL - *utils.Cfg.TeamSettings.RestrictPrivateChannelCreation = model.PERMISSIONS_ALL + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPublicChannelCreation = model.PERMISSIONS_ALL }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPrivateChannelCreation = model.PERMISSIONS_ALL }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -107,8 +107,12 @@ func TestCreateChannel(t *testing.T) { _, resp = Client.CreateChannel(private) CheckNoError(t, resp) - *utils.Cfg.TeamSettings.RestrictPublicChannelCreation = model.PERMISSIONS_TEAM_ADMIN - *utils.Cfg.TeamSettings.RestrictPrivateChannelCreation = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPublicChannelCreation = model.PERMISSIONS_TEAM_ADMIN + }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelCreation = model.PERMISSIONS_TEAM_ADMIN + }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.CreateChannel(channel) @@ -135,8 +139,12 @@ func TestCreateChannel(t *testing.T) { _, resp = th.SystemAdminClient.CreateChannel(private) CheckNoError(t, resp) - *utils.Cfg.TeamSettings.RestrictPublicChannelCreation = model.PERMISSIONS_SYSTEM_ADMIN - *utils.Cfg.TeamSettings.RestrictPrivateChannelCreation = model.PERMISSIONS_SYSTEM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPublicChannelCreation = model.PERMISSIONS_SYSTEM_ADMIN + }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelCreation = model.PERMISSIONS_SYSTEM_ADMIN + }) utils.SetDefaultRolesBasedOnConfig() th.LoginBasic() @@ -880,17 +888,17 @@ func TestDeleteChannel(t *testing.T) { isLicensed := utils.IsLicensed() license := utils.License() - restrictPublicChannel := *utils.Cfg.TeamSettings.RestrictPublicChannelManagement - restrictPrivateChannel := *utils.Cfg.TeamSettings.RestrictPrivateChannelManagement + restrictPublicChannel := *th.App.Config().TeamSettings.RestrictPublicChannelManagement + restrictPrivateChannel := *th.App.Config().TeamSettings.RestrictPrivateChannelManagement defer func() { - *utils.Cfg.TeamSettings.RestrictPublicChannelManagement = restrictPublicChannel - *utils.Cfg.TeamSettings.RestrictPrivateChannelManagement = restrictPrivateChannel + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPublicChannelManagement = restrictPublicChannel }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPrivateChannelManagement = restrictPrivateChannel }) utils.SetIsLicensed(isLicensed) utils.SetLicense(license) utils.SetDefaultRolesBasedOnConfig() }() - *utils.Cfg.TeamSettings.RestrictPublicChannelManagement = model.PERMISSIONS_ALL - *utils.Cfg.TeamSettings.RestrictPrivateChannelManagement = model.PERMISSIONS_ALL + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPublicChannelManagement = model.PERMISSIONS_ALL }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPrivateChannelManagement = model.PERMISSIONS_ALL }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -915,8 +923,12 @@ func TestDeleteChannel(t *testing.T) { _, resp = Client.DeleteChannel(privateChannel7.Id) CheckNoError(t, resp) - *utils.Cfg.TeamSettings.RestrictPublicChannelDeletion = model.PERMISSIONS_CHANNEL_ADMIN - *utils.Cfg.TeamSettings.RestrictPrivateChannelDeletion = model.PERMISSIONS_CHANNEL_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPublicChannelDeletion = model.PERMISSIONS_CHANNEL_ADMIN + }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelDeletion = model.PERMISSIONS_CHANNEL_ADMIN + }) utils.SetDefaultRolesBasedOnConfig() // channels created by SystemAdmin @@ -964,8 +976,12 @@ func TestDeleteChannel(t *testing.T) { _, resp = Client.DeleteChannel(privateChannel7.Id) CheckNoError(t, resp) - *utils.Cfg.TeamSettings.RestrictPublicChannelDeletion = model.PERMISSIONS_TEAM_ADMIN - *utils.Cfg.TeamSettings.RestrictPrivateChannelDeletion = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPublicChannelDeletion = model.PERMISSIONS_TEAM_ADMIN + }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelDeletion = model.PERMISSIONS_TEAM_ADMIN + }) utils.SetDefaultRolesBasedOnConfig() th.UpdateUserToNonTeamAdmin(user, team) th.App.InvalidateAllCaches() @@ -1011,8 +1027,12 @@ func TestDeleteChannel(t *testing.T) { _, resp = Client.DeleteChannel(privateChannel7.Id) CheckNoError(t, resp) - *utils.Cfg.TeamSettings.RestrictPublicChannelDeletion = model.PERMISSIONS_SYSTEM_ADMIN - *utils.Cfg.TeamSettings.RestrictPrivateChannelDeletion = model.PERMISSIONS_SYSTEM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPublicChannelDeletion = model.PERMISSIONS_SYSTEM_ADMIN + }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelDeletion = model.PERMISSIONS_SYSTEM_ADMIN + }) utils.SetDefaultRolesBasedOnConfig() // channels created by SystemAdmin @@ -1781,11 +1801,15 @@ func TestAddChannelMember(t *testing.T) { CheckNoError(t, resp) // Test policy does not apply to TE. - restrictPrivateChannel := *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers + restrictPrivateChannel := *th.App.Config().TeamSettings.RestrictPrivateChannelManageMembers defer func() { - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = restrictPrivateChannel + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = restrictPrivateChannel + }) }() - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + }) utils.SetDefaultRolesBasedOnConfig() Client.Login(user2.Username, user2.Password) @@ -1807,7 +1831,7 @@ func TestAddChannelMember(t *testing.T) { utils.SetLicense(license) utils.SetDefaultRolesBasedOnConfig() }() - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_ALL + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_ALL }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1826,7 +1850,9 @@ func TestAddChannelMember(t *testing.T) { Client.Logout() // Test with CHANNEL_ADMIN level permission. - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1856,7 +1882,9 @@ func TestAddChannelMember(t *testing.T) { Client.Logout() // Test with TEAM_ADMIN level permission. - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_TEAM_ADMIN + }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1886,7 +1914,9 @@ func TestAddChannelMember(t *testing.T) { Client.Logout() // Test with SYSTEM_ADMIN level permission. - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_SYSTEM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_SYSTEM_ADMIN + }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1967,11 +1997,15 @@ func TestRemoveChannelMember(t *testing.T) { th.App.InvalidateAllCaches() // Test policy does not apply to TE. - restrictPrivateChannel := *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers + restrictPrivateChannel := *th.App.Config().TeamSettings.RestrictPrivateChannelManageMembers defer func() { - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = restrictPrivateChannel + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = restrictPrivateChannel + }) }() - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + }) utils.SetDefaultRolesBasedOnConfig() privateChannel := th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_PRIVATE) @@ -1991,7 +2025,7 @@ func TestRemoveChannelMember(t *testing.T) { utils.SetLicense(license) utils.SetDefaultRolesBasedOnConfig() }() - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_ALL + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_ALL }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -2008,7 +2042,9 @@ func TestRemoveChannelMember(t *testing.T) { CheckNoError(t, resp) // Test with CHANNEL_ADMIN level permission. - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_CHANNEL_ADMIN + }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -2033,7 +2069,9 @@ func TestRemoveChannelMember(t *testing.T) { CheckNoError(t, resp) // Test with TEAM_ADMIN level permission. - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_TEAM_ADMIN + }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -2058,7 +2096,9 @@ func TestRemoveChannelMember(t *testing.T) { CheckNoError(t, resp) // Test with SYSTEM_ADMIN level permission. - *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_SYSTEM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.TeamSettings.RestrictPrivateChannelManageMembers = model.PERMISSIONS_SYSTEM_ADMIN + }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() diff --git a/api4/command_help_test.go b/api4/command_help_test.go index 68a098636..c5ff819b3 100644 --- a/api4/command_help_test.go +++ b/api4/command_help_test.go @@ -7,7 +7,6 @@ import ( "testing" "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/utils" ) func TestHelpCommand(t *testing.T) { @@ -17,18 +16,20 @@ func TestHelpCommand(t *testing.T) { Client := th.Client channel := th.BasicChannel - HelpLink := *utils.Cfg.SupportSettings.HelpLink + HelpLink := *th.App.Config().SupportSettings.HelpLink defer func() { - *utils.Cfg.SupportSettings.HelpLink = HelpLink + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.SupportSettings.HelpLink = HelpLink }) }() - *utils.Cfg.SupportSettings.HelpLink = "" + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.SupportSettings.HelpLink = "" }) rs1, _ := Client.ExecuteCommand(channel.Id, "/help ") if rs1.GotoLocation != model.SUPPORT_SETTINGS_DEFAULT_HELP_LINK { t.Fatal("failed to default help link") } - *utils.Cfg.SupportSettings.HelpLink = "https://docs.mattermost.com/guides/user.html" + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.SupportSettings.HelpLink = "https://docs.mattermost.com/guides/user.html" + }) rs2, _ := Client.ExecuteCommand(channel.Id, "/help ") if rs2.GotoLocation != "https://docs.mattermost.com/guides/user.html" { t.Fatal("failed to help link") diff --git a/api4/command_test.go b/api4/command_test.go index 716b3e414..3be1af061 100644 --- a/api4/command_test.go +++ b/api4/command_test.go @@ -9,7 +9,6 @@ import ( "testing" "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/utils" ) func TestCreateCommand(t *testing.T) { @@ -17,11 +16,11 @@ func TestCreateCommand(t *testing.T) { defer th.TearDown() Client := th.Client - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands + enableCommands := *th.App.Config().ServiceSettings.EnableCommands defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) newCmd := &model.Command{ CreatorId: th.BasicUser.Id, @@ -53,7 +52,7 @@ func TestCreateCommand(t *testing.T) { CheckBadRequestStatus(t, resp) CheckErrorMessage(t, resp, "model.command.is_valid.method.app_error") - *utils.Cfg.ServiceSettings.EnableCommands = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = false }) newCmd.Method = "P" newCmd.Trigger = "testcommand" _, resp = th.SystemAdminClient.CreateCommand(newCmd) @@ -68,11 +67,11 @@ func TestUpdateCommand(t *testing.T) { user := th.SystemAdminUser team := th.BasicTeam - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands + enableCommands := *th.App.Config().ServiceSettings.EnableCommands defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) cmd1 := &model.Command{ CreatorId: user.Id, @@ -154,11 +153,11 @@ func TestDeleteCommand(t *testing.T) { user := th.SystemAdminUser team := th.BasicTeam - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands + enableCommands := *th.App.Config().ServiceSettings.EnableCommands defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) cmd1 := &model.Command{ CreatorId: user.Id, @@ -352,11 +351,11 @@ func TestRegenToken(t *testing.T) { defer th.TearDown() Client := th.Client - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands + enableCommands := *th.App.Config().ServiceSettings.EnableCommands defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) newCmd := &model.Command{ CreatorId: th.BasicUser.Id, @@ -388,14 +387,16 @@ func TestExecuteCommand(t *testing.T) { Client := th.Client channel := th.BasicChannel - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands - allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections + enableCommands := *th.App.Config().ServiceSettings.EnableCommands + allowedInternalConnections := *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands - utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) + th.App.UpdateConfig(func(cfg *model.Config) { + cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true - *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" }) postCmd := &model.Command{ CreatorId: th.BasicUser.Id, @@ -498,14 +499,16 @@ func TestExecuteCommandAgainstChannelOnAnotherTeam(t *testing.T) { Client := th.Client channel := th.BasicChannel - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands - allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections + enableCommands := *th.App.Config().ServiceSettings.EnableCommands + allowedInternalConnections := *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands - utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) + th.App.UpdateConfig(func(cfg *model.Config) { + cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true - *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" }) // create a slash command on some other team where we have permission to do so team2 := th.CreateTeam() @@ -531,14 +534,16 @@ func TestExecuteCommandAgainstChannelUserIsNotIn(t *testing.T) { defer th.TearDown() client := th.Client - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands - allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections + enableCommands := *th.App.Config().ServiceSettings.EnableCommands + allowedInternalConnections := *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands - utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) + th.App.UpdateConfig(func(cfg *model.Config) { + cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true - *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" }) // create a slash command on some other team where we have permission to do so team2 := th.CreateTeam() @@ -569,14 +574,16 @@ func TestExecuteCommandInDirectMessageChannel(t *testing.T) { defer th.TearDown() client := th.Client - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands - allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections + enableCommands := *th.App.Config().ServiceSettings.EnableCommands + allowedInternalConnections := *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands - utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) + th.App.UpdateConfig(func(cfg *model.Config) { + cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true - *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" }) // create a slash command on some other team where we have permission to do so team2 := th.CreateTeam() @@ -609,14 +616,16 @@ func TestExecuteCommandInTeamUserIsNotOn(t *testing.T) { defer th.TearDown() client := th.Client - enableCommands := *utils.Cfg.ServiceSettings.EnableCommands - allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections + enableCommands := *th.App.Config().ServiceSettings.EnableCommands + allowedInternalConnections := *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections defer func() { - utils.Cfg.ServiceSettings.EnableCommands = &enableCommands - utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableCommands = &enableCommands }) + th.App.UpdateConfig(func(cfg *model.Config) { + cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + }) }() - *utils.Cfg.ServiceSettings.EnableCommands = true - *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" }) // create a team that the user isn't a part of team2 := th.CreateTeam() diff --git a/api4/context.go b/api4/context.go index c526f38bb..44334aabf 100644 --- a/api4/context.go +++ b/api4/context.go @@ -182,7 +182,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { c.Err.Where = r.URL.Path // Block out detailed error when not in developer mode - if !*utils.Cfg.ServiceSettings.EnableDeveloper { + if !*c.App.Config().ServiceSettings.EnableDeveloper { c.Err.DetailedError = "" } @@ -244,7 +244,7 @@ func (c *Context) IsSystemAdmin() bool { } func (c *Context) SessionRequired() { - if !*utils.Cfg.ServiceSettings.EnableUserAccessTokens && c.Session.Props[model.SESSION_PROP_TYPE] == model.SESSION_TYPE_USER_ACCESS_TOKEN { + if !*c.App.Config().ServiceSettings.EnableUserAccessTokens && c.Session.Props[model.SESSION_PROP_TYPE] == model.SESSION_TYPE_USER_ACCESS_TOKEN { c.Err = model.NewAppError("", "api.context.session_expired.app_error", nil, "UserAccessToken", http.StatusUnauthorized) return } @@ -257,7 +257,7 @@ func (c *Context) SessionRequired() { func (c *Context) MfaRequired() { // Must be licensed for MFA and have it configured for enforcement - if !utils.IsLicensed() || !*utils.License().Features.MFA || !*utils.Cfg.ServiceSettings.EnableMultifactorAuthentication || !*utils.Cfg.ServiceSettings.EnforceMultifactorAuthentication { + if !utils.IsLicensed() || !*utils.License().Features.MFA || !*c.App.Config().ServiceSettings.EnableMultifactorAuthentication || !*c.App.Config().ServiceSettings.EnforceMultifactorAuthentication { return } diff --git a/api4/elasticsearch.go b/api4/elasticsearch.go index 2a378f54e..eb5a09876 100644 --- a/api4/elasticsearch.go +++ b/api4/elasticsearch.go @@ -22,7 +22,7 @@ func (api *API) InitElasticsearch() { func testElasticsearch(c *Context, w http.ResponseWriter, r *http.Request) { cfg := model.ConfigFromJson(r.Body) if cfg == nil { - cfg = utils.Cfg + cfg = c.App.Config() } if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { diff --git a/api4/emoji.go b/api4/emoji.go index d014250d6..f2335b067 100644 --- a/api4/emoji.go +++ b/api4/emoji.go @@ -26,7 +26,7 @@ func (api *API) InitEmoji() { } func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.ServiceSettings.EnableCustomEmoji { + if !*c.App.Config().ServiceSettings.EnableCustomEmoji { c.Err = model.NewAppError("createEmoji", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -37,7 +37,7 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) { return } - if len(*utils.Cfg.FileSettings.DriverName) == 0 { + if len(*c.App.Config().FileSettings.DriverName) == 0 { c.Err = model.NewAppError("createEmoji", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented) return } @@ -76,7 +76,7 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) { } func getEmojiList(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.ServiceSettings.EnableCustomEmoji { + if !*c.App.Config().ServiceSettings.EnableCustomEmoji { c.Err = model.NewAppError("getEmoji", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -122,7 +122,7 @@ func getEmoji(c *Context, w http.ResponseWriter, r *http.Request) { return } - if !*utils.Cfg.ServiceSettings.EnableCustomEmoji { + if !*c.App.Config().ServiceSettings.EnableCustomEmoji { c.Err = model.NewAppError("getEmoji", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -142,12 +142,12 @@ func getEmojiImage(c *Context, w http.ResponseWriter, r *http.Request) { return } - if !*utils.Cfg.ServiceSettings.EnableCustomEmoji { + if !*c.App.Config().ServiceSettings.EnableCustomEmoji { c.Err = model.NewAppError("getEmojiImage", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented) return } - if len(*utils.Cfg.FileSettings.DriverName) == 0 { + if len(*c.App.Config().FileSettings.DriverName) == 0 { c.Err = model.NewAppError("getEmojiImage", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented) return } diff --git a/api4/emoji_test.go b/api4/emoji_test.go index fe746f304..e35abdf08 100644 --- a/api4/emoji_test.go +++ b/api4/emoji_test.go @@ -18,11 +18,11 @@ func TestCreateEmoji(t *testing.T) { defer th.TearDown() Client := th.Client - EnableCustomEmoji := *utils.Cfg.ServiceSettings.EnableCustomEmoji + EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji defer func() { - *utils.Cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji }) }() - *utils.Cfg.ServiceSettings.EnableCustomEmoji = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = false }) emoji := &model.Emoji{ CreatorId: th.BasicUser.Id, @@ -33,7 +33,7 @@ func TestCreateEmoji(t *testing.T) { _, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") CheckNotImplementedStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) // try to create a valid gif emoji when they're enabled newEmoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") CheckNoError(t, resp) @@ -146,11 +146,11 @@ func TestGetEmojiList(t *testing.T) { defer th.TearDown() Client := th.Client - EnableCustomEmoji := *utils.Cfg.ServiceSettings.EnableCustomEmoji + EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji defer func() { - *utils.Cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji }) }() - *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) emojis := []*model.Emoji{ { @@ -216,11 +216,11 @@ func TestDeleteEmoji(t *testing.T) { defer th.TearDown() Client := th.Client - EnableCustomEmoji := *utils.Cfg.ServiceSettings.EnableCustomEmoji + EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji defer func() { - *utils.Cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji }) }() - *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) emoji := &model.Emoji{ CreatorId: th.BasicUser.Id, @@ -283,11 +283,11 @@ func TestGetEmoji(t *testing.T) { defer th.TearDown() Client := th.Client - EnableCustomEmoji := *utils.Cfg.ServiceSettings.EnableCustomEmoji + EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji defer func() { - *utils.Cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji }) }() - *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) emoji := &model.Emoji{ CreatorId: th.BasicUser.Id, @@ -312,13 +312,13 @@ func TestGetEmojiImage(t *testing.T) { defer th.TearDown() Client := th.Client - EnableCustomEmoji := *utils.Cfg.ServiceSettings.EnableCustomEmoji - DriverName := *utils.Cfg.FileSettings.DriverName + EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji + DriverName := *th.App.Config().FileSettings.DriverName defer func() { - *utils.Cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji - *utils.Cfg.FileSettings.DriverName = DriverName + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.DriverName = DriverName }) }() - *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) emoji1 := &model.Emoji{ CreatorId: th.BasicUser.Id, @@ -328,20 +328,20 @@ func TestGetEmojiImage(t *testing.T) { emoji1, resp := Client.CreateEmoji(emoji1, utils.CreateTestGif(t, 10, 10), "image.gif") CheckNoError(t, resp) - *utils.Cfg.ServiceSettings.EnableCustomEmoji = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = false }) _, resp = Client.GetEmojiImage(emoji1.Id) CheckNotImplementedStatus(t, resp) CheckErrorMessage(t, resp, "api.emoji.disabled.app_error") - *utils.Cfg.FileSettings.DriverName = "" - *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.DriverName = "" }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) _, resp = Client.GetEmojiImage(emoji1.Id) CheckNotImplementedStatus(t, resp) CheckErrorMessage(t, resp, "api.emoji.storage.app_error") - *utils.Cfg.FileSettings.DriverName = DriverName + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.DriverName = DriverName }) emojiImage, resp := Client.GetEmojiImage(emoji1.Id) CheckNoError(t, resp) diff --git a/api4/file.go b/api4/file.go index 2c0b85ce7..933640c44 100644 --- a/api4/file.go +++ b/api4/file.go @@ -58,17 +58,17 @@ func (api *API) InitFile() { } func uploadFile(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.FileSettings.EnableFileAttachments { + if !*c.App.Config().FileSettings.EnableFileAttachments { c.Err = model.NewAppError("uploadFile", "api.file.attachments.disabled.app_error", nil, "", http.StatusNotImplemented) return } - if r.ContentLength > *utils.Cfg.FileSettings.MaxFileSize { + if r.ContentLength > *c.App.Config().FileSettings.MaxFileSize { c.Err = model.NewAppError("uploadFile", "api.file.upload_file.too_large.app_error", nil, "", http.StatusRequestEntityTooLarge) return } - if err := r.ParseMultipartForm(*utils.Cfg.FileSettings.MaxFileSize); err != nil { + if err := r.ParseMultipartForm(*c.App.Config().FileSettings.MaxFileSize); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } @@ -179,7 +179,7 @@ func getFileLink(c *Context, w http.ResponseWriter, r *http.Request) { return } - if !utils.Cfg.FileSettings.EnablePublicLink { + if !c.App.Config().FileSettings.EnablePublicLink { c.Err = model.NewAppError("getPublicLink", "api.file.get_public_link.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -269,7 +269,7 @@ func getPublicFile(c *Context, w http.ResponseWriter, r *http.Request) { return } - if !utils.Cfg.FileSettings.EnablePublicLink { + if !c.App.Config().FileSettings.EnablePublicLink { c.Err = model.NewAppError("getPublicFile", "api.file.get_public_link.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -288,7 +288,7 @@ func getPublicFile(c *Context, w http.ResponseWriter, r *http.Request) { return } - if hash != app.GeneratePublicLinkHash(info.Id, *utils.Cfg.FileSettings.PublicLinkSalt) { + if hash != app.GeneratePublicLinkHash(info.Id, *c.App.Config().FileSettings.PublicLinkSalt) { c.Err = model.NewAppError("getPublicFile", "api.file.get_file.public_invalid.app_error", nil, "", http.StatusBadRequest) http.Redirect(w, r, c.GetSiteURLHeader()+"/error?message="+utils.T(c.Err.Message), http.StatusTemporaryRedirect) return diff --git a/api4/file_test.go b/api4/file_test.go index 615e601dc..0d44f2c86 100644 --- a/api4/file_test.go +++ b/api4/file_test.go @@ -13,7 +13,6 @@ import ( "github.com/mattermost/mattermost-server/app" "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/store" - "github.com/mattermost/mattermost-server/utils" ) func TestUploadFile(t *testing.T) { @@ -114,11 +113,11 @@ func TestUploadFile(t *testing.T) { _, resp = th.SystemAdminClient.UploadFile(data, channel.Id, "test.png") CheckNoError(t, resp) - enableFileAttachments := *utils.Cfg.FileSettings.EnableFileAttachments + enableFileAttachments := *th.App.Config().FileSettings.EnableFileAttachments defer func() { - *utils.Cfg.FileSettings.EnableFileAttachments = enableFileAttachments + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = enableFileAttachments }) }() - *utils.Cfg.FileSettings.EnableFileAttachments = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = false }) _, resp = th.SystemAdminClient.UploadFile(data, channel.Id, "test.png") if resp.StatusCode != http.StatusNotImplemented && resp.StatusCode != 0 { @@ -133,7 +132,7 @@ func TestGetFile(t *testing.T) { Client := th.Client channel := th.BasicChannel - if *utils.Cfg.FileSettings.DriverName == "" { + if *th.App.Config().FileSettings.DriverName == "" { t.Skip("skipping because no file driver is enabled") } @@ -183,7 +182,7 @@ func TestGetFileHeaders(t *testing.T) { Client := th.Client channel := th.BasicChannel - if *utils.Cfg.FileSettings.DriverName == "" { + if *th.App.Config().FileSettings.DriverName == "" { t.Skip("skipping because no file driver is enabled") } @@ -247,7 +246,7 @@ func TestGetFileThumbnail(t *testing.T) { Client := th.Client channel := th.BasicChannel - if *utils.Cfg.FileSettings.DriverName == "" { + if *th.App.Config().FileSettings.DriverName == "" { t.Skip("skipping because no file driver is enabled") } @@ -299,18 +298,18 @@ func TestGetFileLink(t *testing.T) { Client := th.Client channel := th.BasicChannel - if *utils.Cfg.FileSettings.DriverName == "" { + if *th.App.Config().FileSettings.DriverName == "" { t.Skip("skipping because no file driver is enabled") } - enablePublicLink := utils.Cfg.FileSettings.EnablePublicLink - publicLinkSalt := *utils.Cfg.FileSettings.PublicLinkSalt + enablePublicLink := th.App.Config().FileSettings.EnablePublicLink + publicLinkSalt := *th.App.Config().FileSettings.PublicLinkSalt defer func() { - utils.Cfg.FileSettings.EnablePublicLink = enablePublicLink - *utils.Cfg.FileSettings.PublicLinkSalt = publicLinkSalt + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = enablePublicLink }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.PublicLinkSalt = publicLinkSalt }) }() - utils.Cfg.FileSettings.EnablePublicLink = true - *utils.Cfg.FileSettings.PublicLinkSalt = model.NewId() + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.PublicLinkSalt = model.NewId() }) fileId := "" if data, err := readTestFile("test.png"); err != nil { @@ -328,14 +327,14 @@ func TestGetFileLink(t *testing.T) { // Hacky way to assign file to a post (usually would be done by CreatePost call) store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id)) - utils.Cfg.FileSettings.EnablePublicLink = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = false }) _, resp = Client.GetFileLink(fileId) CheckNotImplementedStatus(t, resp) // Wait a bit for files to ready time.Sleep(2 * time.Second) - utils.Cfg.FileSettings.EnablePublicLink = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = true }) link, resp = Client.GetFileLink(fileId) CheckNoError(t, resp) if link == "" { @@ -374,7 +373,7 @@ func TestGetFilePreview(t *testing.T) { Client := th.Client channel := th.BasicChannel - if *utils.Cfg.FileSettings.DriverName == "" { + if *th.App.Config().FileSettings.DriverName == "" { t.Skip("skipping because no file driver is enabled") } @@ -427,7 +426,7 @@ func TestGetFileInfo(t *testing.T) { user := th.BasicUser channel := th.BasicChannel - if *utils.Cfg.FileSettings.DriverName == "" { + if *th.App.Config().FileSettings.DriverName == "" { t.Skip("skipping because no file driver is enabled") } @@ -493,18 +492,18 @@ func TestGetPublicFile(t *testing.T) { Client := th.Client channel := th.BasicChannel - if *utils.Cfg.FileSettings.DriverName == "" { + if *th.App.Config().FileSettings.DriverName == "" { t.Skip("skipping because no file driver is enabled") } - enablePublicLink := utils.Cfg.FileSettings.EnablePublicLink - publicLinkSalt := *utils.Cfg.FileSettings.PublicLinkSalt + enablePublicLink := th.App.Config().FileSettings.EnablePublicLink + publicLinkSalt := *th.App.Config().FileSettings.PublicLinkSalt defer func() { - utils.Cfg.FileSettings.EnablePublicLink = enablePublicLink - *utils.Cfg.FileSettings.PublicLinkSalt = publicLinkSalt + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = enablePublicLink }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.PublicLinkSalt = publicLinkSalt }) }() - utils.Cfg.FileSettings.EnablePublicLink = true - *utils.Cfg.FileSettings.PublicLinkSalt = GenerateTestId() + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.PublicLinkSalt = GenerateTestId() }) fileId := "" if data, err := readTestFile("test.png"); err != nil { @@ -535,14 +534,14 @@ func TestGetPublicFile(t *testing.T) { t.Fatal("should've failed to get image with public link without hash", resp.Status) } - utils.Cfg.FileSettings.EnablePublicLink = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = false }) if resp, err := http.Get(link); err == nil && resp.StatusCode != http.StatusNotImplemented { t.Fatal("should've failed to get image with disabled public link") } // test after the salt has changed - utils.Cfg.FileSettings.EnablePublicLink = true - *utils.Cfg.FileSettings.PublicLinkSalt = GenerateTestId() + th.App.UpdateConfig(func(cfg *model.Config) { cfg.FileSettings.EnablePublicLink = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.PublicLinkSalt = GenerateTestId() }) if resp, err := http.Get(link); err == nil && resp.StatusCode != http.StatusBadRequest { t.Fatal("should've failed to get image with public link after salt changed") diff --git a/api4/oauth.go b/api4/oauth.go index c60f240f6..8933f0863 100644 --- a/api4/oauth.go +++ b/api4/oauth.go @@ -313,7 +313,7 @@ func deauthorizeOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) { } func authorizeOAuthPage(c *Context, w http.ResponseWriter, r *http.Request) { - if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider { + if !c.App.Config().ServiceSettings.EnableOAuthServiceProvider { err := model.NewAppError("authorizeOAuth", "api.oauth.authorize_oauth.disabled.app_error", nil, "", http.StatusNotImplemented) utils.RenderWebError(err, w, r) return @@ -560,7 +560,7 @@ func signupWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) { return } - if !utils.Cfg.TeamSettings.EnableUserCreation { + if !c.App.Config().TeamSettings.EnableUserCreation { c.Err = model.NewAppError("signupWithOAuth", "api.oauth.singup_with_oauth.disabled.app_error", nil, "", http.StatusNotImplemented) return } diff --git a/api4/oauth_test.go b/api4/oauth_test.go index 9fa794e27..fbe5f11e5 100644 --- a/api4/oauth_test.go +++ b/api4/oauth_test.go @@ -19,13 +19,13 @@ func TestCreateOAuthApp(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider - adminOnly := *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider + adminOnly := *th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}, IsTrusted: true} @@ -42,12 +42,12 @@ func TestCreateOAuthApp(t *testing.T) { t.Fatal("trusted did no match") } - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.CreateOAuthApp(oapp) CheckForbiddenStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() rapp, resp = Client.CreateOAuthApp(oapp) CheckNoError(t, resp) @@ -75,7 +75,7 @@ func TestCreateOAuthApp(t *testing.T) { _, resp = Client.CreateOAuthApp(oapp) CheckUnauthorizedStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = false }) oapp.Name = GenerateTestAppName() _, resp = AdminClient.CreateOAuthApp(oapp) CheckNotImplementedStatus(t, resp) @@ -87,13 +87,13 @@ func TestUpdateOAuthApp(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider - adminOnly := *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider + adminOnly := *th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{ @@ -101,7 +101,7 @@ func TestUpdateOAuthApp(t *testing.T) { IsTrusted: false, IconURL: "https://nowhere.com/img", Homepage: "https://nowhere.com", - Description: "test", + Description: "test", CallbackUrls: []string{"https://callback.com"}, } @@ -112,7 +112,7 @@ func TestUpdateOAuthApp(t *testing.T) { oapp.IconURL = "https://nowhere.com/img_update" oapp.Homepage = "https://nowhere_update.com" oapp.Description = "test_update" - oapp.CallbackUrls = []string{"https://callback_update.com","https://another_callback.com"} + oapp.CallbackUrls = []string{"https://callback_update.com", "https://another_callback.com"} updatedApp, resp := AdminClient.UpdateOAuthApp(oapp) CheckNoError(t, resp) @@ -153,7 +153,7 @@ func TestUpdateOAuthApp(t *testing.T) { for i, callbackUrl := range updatedApp.CallbackUrls { if callbackUrl != oapp.CallbackUrls[i] { t.Fatal("Description should have updated") - } + } } } @@ -165,7 +165,7 @@ func TestUpdateOAuthApp(t *testing.T) { t.Fatal("IsTrusted should have updated") } - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.UpdateOAuthApp(oapp) CheckForbiddenStatus(t, resp) @@ -174,7 +174,7 @@ func TestUpdateOAuthApp(t *testing.T) { _, resp = AdminClient.UpdateOAuthApp(oapp) CheckNotFoundStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = false }) _, resp = AdminClient.UpdateOAuthApp(oapp) CheckNotImplementedStatus(t, resp) @@ -193,14 +193,14 @@ func TestGetOAuthApps(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider - adminOnly := *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider + adminOnly := *th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} @@ -244,7 +244,7 @@ func TestGetOAuthApps(t *testing.T) { t.Fatal("wrong apps returned") } - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.GetOAuthApps(0, 1000) @@ -255,7 +255,7 @@ func TestGetOAuthApps(t *testing.T) { _, resp = Client.GetOAuthApps(0, 1000) CheckUnauthorizedStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = false }) _, resp = AdminClient.GetOAuthApps(0, 1000) CheckNotImplementedStatus(t, resp) } @@ -266,14 +266,14 @@ func TestGetOAuthApp(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider - adminOnly := *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider + adminOnly := *th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} @@ -313,7 +313,7 @@ func TestGetOAuthApp(t *testing.T) { _, resp = Client.GetOAuthApp(rapp.Id) CheckForbiddenStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.GetOAuthApp(rapp2.Id) @@ -330,7 +330,7 @@ func TestGetOAuthApp(t *testing.T) { _, resp = AdminClient.GetOAuthApp(model.NewId()) CheckNotFoundStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = false }) _, resp = AdminClient.GetOAuthApp(rapp.Id) CheckNotImplementedStatus(t, resp) } @@ -341,14 +341,14 @@ func TestGetOAuthAppInfo(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider - adminOnly := *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider + adminOnly := *th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} @@ -388,7 +388,7 @@ func TestGetOAuthAppInfo(t *testing.T) { _, resp = Client.GetOAuthAppInfo(rapp.Id) CheckNoError(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.GetOAuthAppInfo(rapp2.Id) @@ -405,7 +405,7 @@ func TestGetOAuthAppInfo(t *testing.T) { _, resp = AdminClient.GetOAuthAppInfo(model.NewId()) CheckNotFoundStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = false }) _, resp = AdminClient.GetOAuthAppInfo(rapp.Id) CheckNotImplementedStatus(t, resp) } @@ -416,14 +416,14 @@ func TestDeleteOAuthApp(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider - adminOnly := *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider + adminOnly := *th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} @@ -458,7 +458,7 @@ func TestDeleteOAuthApp(t *testing.T) { _, resp = Client.DeleteOAuthApp(rapp2.Id) CheckNoError(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.DeleteOAuthApp(rapp.Id) CheckForbiddenStatus(t, resp) @@ -473,7 +473,7 @@ func TestDeleteOAuthApp(t *testing.T) { _, resp = AdminClient.DeleteOAuthApp(model.NewId()) CheckNotFoundStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = false }) _, resp = AdminClient.DeleteOAuthApp(rapp.Id) CheckNotImplementedStatus(t, resp) } @@ -484,14 +484,14 @@ func TestRegenerateOAuthAppSecret(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider - adminOnly := *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider + adminOnly := *th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = adminOnly }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} @@ -530,7 +530,7 @@ func TestRegenerateOAuthAppSecret(t *testing.T) { _, resp = Client.RegenerateOAuthAppSecret(rapp2.Id) CheckNoError(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.RegenerateOAuthAppSecret(rapp.Id) CheckForbiddenStatus(t, resp) @@ -545,7 +545,7 @@ func TestRegenerateOAuthAppSecret(t *testing.T) { _, resp = AdminClient.RegenerateOAuthAppSecret(model.NewId()) CheckNotFoundStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = false }) _, resp = AdminClient.RegenerateOAuthAppSecret(rapp.Id) CheckNotImplementedStatus(t, resp) } @@ -556,11 +556,11 @@ func TestGetAuthorizedOAuthAppsForUser(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} @@ -616,11 +616,11 @@ func TestAuthorizeOAuthApp(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) utils.SetDefaultRolesBasedOnConfig() oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} @@ -684,11 +684,11 @@ func TestDeauthorizeOAuthApp(t *testing.T) { Client := th.Client AdminClient := th.SystemAdminClient - enableOAuth := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider + enableOAuth := th.App.Config().ServiceSettings.EnableOAuthServiceProvider defer func() { - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = enableOAuth }) }() - utils.Cfg.ServiceSettings.EnableOAuthServiceProvider = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOAuthServiceProvider = true }) oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} diff --git a/api4/openGraph.go b/api4/openGraph.go index e03ecd219..6ddd0d79c 100644 --- a/api4/openGraph.go +++ b/api4/openGraph.go @@ -23,7 +23,7 @@ func (api *API) InitOpenGraph() { } func getOpenGraphMetadata(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.ServiceSettings.EnableLinkPreviews { + if !*c.App.Config().ServiceSettings.EnableLinkPreviews { c.Err = model.NewAppError("getOpenGraphMetadata", "api.post.link_preview_disabled.app_error", nil, "", http.StatusNotImplemented) return } diff --git a/api4/openGraph_test.go b/api4/openGraph_test.go index 04f207f55..6a14ad943 100644 --- a/api4/openGraph_test.go +++ b/api4/openGraph_test.go @@ -9,9 +9,8 @@ import ( "net/http/httptest" "strings" + "github.com/mattermost/mattermost-server/model" "testing" - - "github.com/mattermost/mattermost-server/utils" ) func TestGetOpenGraphMetadata(t *testing.T) { @@ -20,14 +19,18 @@ func TestGetOpenGraphMetadata(t *testing.T) { Client := th.Client - enableLinkPreviews := *utils.Cfg.ServiceSettings.EnableLinkPreviews - allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections + enableLinkPreviews := *th.App.Config().ServiceSettings.EnableLinkPreviews + allowedInternalConnections := *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections defer func() { - *utils.Cfg.ServiceSettings.EnableLinkPreviews = enableLinkPreviews - utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableLinkPreviews = enableLinkPreviews }) + th.App.UpdateConfig(func(cfg *model.Config) { + cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + }) }() - *utils.Cfg.ServiceSettings.EnableLinkPreviews = true - *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1" + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableLinkPreviews = true }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1" + }) ogDataCacheMissCount := 0 @@ -72,7 +75,7 @@ func TestGetOpenGraphMetadata(t *testing.T) { } } - *utils.Cfg.ServiceSettings.EnableLinkPreviews = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableLinkPreviews = false }) _, resp := Client.OpenGraph(ts.URL + "/og-data/") CheckNotImplementedStatus(t, resp) } diff --git a/api4/plugin.go b/api4/plugin.go index 08dea6301..2045a35a8 100644 --- a/api4/plugin.go +++ b/api4/plugin.go @@ -11,7 +11,6 @@ import ( l4g "github.com/alecthomas/log4go" "github.com/mattermost/mattermost-server/app" "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/utils" ) const ( @@ -30,7 +29,7 @@ func (api *API) InitPlugin() { } func uploadPlugin(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.PluginSettings.Enable { + if !*c.App.Config().PluginSettings.Enable { c.Err = model.NewAppError("uploadPlugin", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -77,7 +76,7 @@ func uploadPlugin(c *Context, w http.ResponseWriter, r *http.Request) { } func getPlugins(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.PluginSettings.Enable { + if !*c.App.Config().PluginSettings.Enable { c.Err = model.NewAppError("getPlugins", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -102,7 +101,7 @@ func removePlugin(c *Context, w http.ResponseWriter, r *http.Request) { return } - if !*utils.Cfg.PluginSettings.Enable { + if !*c.App.Config().PluginSettings.Enable { c.Err = model.NewAppError("getPlugins", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented) return } @@ -122,7 +121,7 @@ func removePlugin(c *Context, w http.ResponseWriter, r *http.Request) { } func getWebappPlugins(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.PluginSettings.Enable { + if !*c.App.Config().PluginSettings.Enable { c.Err = model.NewAppError("getWebappPlugins", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented) return } diff --git a/api4/plugin_test.go b/api4/plugin_test.go index 5051ab434..1feb1b06a 100644 --- a/api4/plugin_test.go +++ b/api4/plugin_test.go @@ -9,6 +9,7 @@ import ( "os" "testing" + "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/utils" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -26,11 +27,11 @@ func TestPlugin(t *testing.T) { th := SetupEnterprise().InitBasic().InitSystemAdmin() defer th.TearDown() - enablePlugins := *utils.Cfg.PluginSettings.Enable + enablePlugins := *th.App.Config().PluginSettings.Enable defer func() { - *utils.Cfg.PluginSettings.Enable = enablePlugins + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = enablePlugins }) }() - *utils.Cfg.PluginSettings.Enable = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) th.App.InitPlugins(pluginDir, webappDir) defer func() { @@ -56,11 +57,11 @@ func TestPlugin(t *testing.T) { _, resp = th.SystemAdminClient.UploadPlugin(bytes.NewReader([]byte("badfile"))) CheckBadRequestStatus(t, resp) - *utils.Cfg.PluginSettings.Enable = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = false }) _, resp = th.SystemAdminClient.UploadPlugin(file) CheckNotImplementedStatus(t, resp) - *utils.Cfg.PluginSettings.Enable = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) _, resp = th.Client.UploadPlugin(file) CheckForbiddenStatus(t, resp) @@ -78,11 +79,11 @@ func TestPlugin(t *testing.T) { assert.True(t, found) // Get error cases - *utils.Cfg.PluginSettings.Enable = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = false }) _, resp = th.SystemAdminClient.GetPlugins() CheckNotImplementedStatus(t, resp) - *utils.Cfg.PluginSettings.Enable = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) _, resp = th.Client.GetPlugins() CheckForbiddenStatus(t, resp) @@ -111,11 +112,11 @@ func TestPlugin(t *testing.T) { assert.False(t, ok) - *utils.Cfg.PluginSettings.Enable = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = false }) _, resp = th.SystemAdminClient.RemovePlugin(manifest.Id) CheckNotImplementedStatus(t, resp) - *utils.Cfg.PluginSettings.Enable = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) _, resp = th.Client.RemovePlugin(manifest.Id) CheckForbiddenStatus(t, resp) diff --git a/api4/post_test.go b/api4/post_test.go index 27e6d6458..3a410f2b4 100644 --- a/api4/post_test.go +++ b/api4/post_test.go @@ -124,19 +124,23 @@ func testCreatePostWithOutgoingHook( team := th.BasicTeam channel := th.BasicChannel - enableOutgoingHooks := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations - allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections + enableOutgoingHooks := th.App.Config().ServiceSettings.EnableOutgoingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations + allowedInternalConnections := *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections defer func() { - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() - utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + th.App.UpdateConfig(func(cfg *model.Config) { + cfg.ServiceSettings.AllowedUntrustedInternalConnections = &allowedInternalConnections + }) }() - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() - *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1" + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1" + }) var hook *model.OutgoingWebhook var post *model.Post @@ -375,18 +379,18 @@ func TestUpdatePost(t *testing.T) { isLicensed := utils.IsLicensed() license := utils.License() - allowEditPost := *utils.Cfg.ServiceSettings.AllowEditPost + allowEditPost := *th.App.Config().ServiceSettings.AllowEditPost defer func() { utils.SetIsLicensed(isLicensed) utils.SetLicense(license) - *utils.Cfg.ServiceSettings.AllowEditPost = allowEditPost + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowEditPost = allowEditPost }) utils.SetDefaultRolesBasedOnConfig() }() utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() - *utils.Cfg.ServiceSettings.AllowEditPost = model.ALLOW_EDIT_POST_ALWAYS + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowEditPost = model.ALLOW_EDIT_POST_ALWAYS }) utils.SetDefaultRolesBasedOnConfig() post := &model.Post{ChannelId: channel.Id, Message: "zz" + model.NewId() + "a"} @@ -455,18 +459,18 @@ func TestPatchPost(t *testing.T) { isLicensed := utils.IsLicensed() license := utils.License() - allowEditPost := *utils.Cfg.ServiceSettings.AllowEditPost + allowEditPost := *th.App.Config().ServiceSettings.AllowEditPost defer func() { utils.SetIsLicensed(isLicensed) utils.SetLicense(license) - *utils.Cfg.ServiceSettings.AllowEditPost = allowEditPost + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowEditPost = allowEditPost }) utils.SetDefaultRolesBasedOnConfig() }() utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() - *utils.Cfg.ServiceSettings.AllowEditPost = model.ALLOW_EDIT_POST_ALWAYS + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowEditPost = model.ALLOW_EDIT_POST_ALWAYS }) utils.SetDefaultRolesBasedOnConfig() post := &model.Post{ diff --git a/api4/system.go b/api4/system.go index b8c927630..920e9a63d 100644 --- a/api4/system.go +++ b/api4/system.go @@ -44,11 +44,11 @@ func (api *API) InitSystem() { func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) { actualGoroutines := runtime.NumGoroutine() - if *utils.Cfg.ServiceSettings.GoroutineHealthThreshold <= 0 || actualGoroutines <= *utils.Cfg.ServiceSettings.GoroutineHealthThreshold { + if *c.App.Config().ServiceSettings.GoroutineHealthThreshold <= 0 || actualGoroutines <= *c.App.Config().ServiceSettings.GoroutineHealthThreshold { m := make(map[string]string) m[model.STATUS] = model.STATUS_OK - reqs := utils.Cfg.ClientRequirements + reqs := c.App.Config().ClientRequirements m["AndroidLatestVersion"] = reqs.AndroidLatestVersion m["AndroidMinVersion"] = reqs.AndroidMinVersion m["DesktopLatestVersion"] = reqs.DesktopLatestVersion @@ -61,7 +61,7 @@ func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) { rdata := map[string]string{} rdata["status"] = "unhealthy" - l4g.Warn(utils.T("api.system.go_routines"), actualGoroutines, *utils.Cfg.ServiceSettings.GoroutineHealthThreshold) + l4g.Warn(utils.T("api.system.go_routines"), actualGoroutines, *c.App.Config().ServiceSettings.GoroutineHealthThreshold) w.WriteHeader(http.StatusInternalServerError) w.Write([]byte(model.MapToJson(rdata))) @@ -71,7 +71,7 @@ func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) { func testEmail(c *Context, w http.ResponseWriter, r *http.Request) { cfg := model.ConfigFromJson(r.Body) if cfg == nil { - cfg = utils.Cfg + cfg = c.App.Config() } if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { @@ -198,7 +198,7 @@ func getLogs(c *Context, w http.ResponseWriter, r *http.Request) { } func postLog(c *Context, w http.ResponseWriter, r *http.Request) { - if !*utils.Cfg.ServiceSettings.EnableDeveloper && !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { + if !*c.App.Config().ServiceSettings.EnableDeveloper && !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) return } @@ -286,7 +286,7 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) { return } - err := r.ParseMultipartForm(*utils.Cfg.FileSettings.MaxFileSize) + err := r.ParseMultipartForm(*c.App.Config().FileSettings.MaxFileSize) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return diff --git a/api4/system_test.go b/api4/system_test.go index 2855e5840..14165acb4 100644 --- a/api4/system_test.go +++ b/api4/system_test.go @@ -7,7 +7,6 @@ import ( l4g "github.com/alecthomas/log4go" "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/utils" ) func TestGetPing(t *testing.T) { @@ -15,9 +14,9 @@ func TestGetPing(t *testing.T) { defer th.TearDown() Client := th.Client - goRoutineHealthThreshold := *utils.Cfg.ServiceSettings.GoroutineHealthThreshold + goRoutineHealthThreshold := *th.App.Config().ServiceSettings.GoroutineHealthThreshold defer func() { - *utils.Cfg.ServiceSettings.GoroutineHealthThreshold = goRoutineHealthThreshold + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.GoroutineHealthThreshold = goRoutineHealthThreshold }) }() status, resp := Client.GetPing() @@ -26,7 +25,7 @@ func TestGetPing(t *testing.T) { t.Fatal("should return OK") } - *utils.Cfg.ServiceSettings.GoroutineHealthThreshold = 10 + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.GoroutineHealthThreshold = 10 }) status, resp = th.SystemAdminClient.GetPing() CheckInternalErrorStatus(t, resp) if status != "unhealthy" { @@ -98,8 +97,8 @@ func TestReloadConfig(t *testing.T) { t.Fatal("should Reload the config") } - *utils.Cfg.TeamSettings.MaxUsersPerTeam = 50 - *utils.Cfg.TeamSettings.EnableOpenServer = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.MaxUsersPerTeam = 50 }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true }) } func TestUpdateConfig(t *testing.T) { @@ -112,7 +111,7 @@ func TestUpdateConfig(t *testing.T) { _, resp := Client.UpdateConfig(cfg) CheckForbiddenStatus(t, resp) - SiteName := utils.Cfg.TeamSettings.SiteName + SiteName := th.App.Config().TeamSettings.SiteName cfg.TeamSettings.SiteName = "MyFancyName" cfg, resp = th.SystemAdminClient.UpdateConfig(cfg) @@ -243,21 +242,21 @@ func TestEmailTest(t *testing.T) { defer th.TearDown() Client := th.Client - SendEmailNotifications := utils.Cfg.EmailSettings.SendEmailNotifications - SMTPServer := utils.Cfg.EmailSettings.SMTPServer - SMTPPort := utils.Cfg.EmailSettings.SMTPPort - FeedbackEmail := utils.Cfg.EmailSettings.FeedbackEmail + SendEmailNotifications := th.App.Config().EmailSettings.SendEmailNotifications + SMTPServer := th.App.Config().EmailSettings.SMTPServer + SMTPPort := th.App.Config().EmailSettings.SMTPPort + FeedbackEmail := th.App.Config().EmailSettings.FeedbackEmail defer func() { - utils.Cfg.EmailSettings.SendEmailNotifications = SendEmailNotifications - utils.Cfg.EmailSettings.SMTPServer = SMTPServer - utils.Cfg.EmailSettings.SMTPPort = SMTPPort - utils.Cfg.EmailSettings.FeedbackEmail = FeedbackEmail + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.SendEmailNotifications = SendEmailNotifications }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.SMTPServer = SMTPServer }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.SMTPPort = SMTPPort }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.FeedbackEmail = FeedbackEmail }) }() - utils.Cfg.EmailSettings.SendEmailNotifications = false - utils.Cfg.EmailSettings.SMTPServer = "" - utils.Cfg.EmailSettings.SMTPPort = "" - utils.Cfg.EmailSettings.FeedbackEmail = "" + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.SendEmailNotifications = false }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.SMTPServer = "" }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.SMTPPort = "" }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.EmailSettings.FeedbackEmail = "" }) _, resp := Client.TestEmail() CheckForbiddenStatus(t, resp) diff --git a/api4/team_test.go b/api4/team_test.go index 45484e2a1..f0668d9ac 100644 --- a/api4/team_test.go +++ b/api4/team_test.go @@ -68,12 +68,12 @@ func TestCreateTeam(t *testing.T) { CheckUnauthorizedStatus(t, resp) // Update permission - enableTeamCreation := utils.Cfg.TeamSettings.EnableTeamCreation + enableTeamCreation := th.App.Config().TeamSettings.EnableTeamCreation defer func() { - utils.Cfg.TeamSettings.EnableTeamCreation = enableTeamCreation + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableTeamCreation = enableTeamCreation }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.TeamSettings.EnableTeamCreation = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableTeamCreation = false }) utils.SetDefaultRolesBasedOnConfig() th.LoginBasic() @@ -1295,18 +1295,18 @@ func TestAddTeamMember(t *testing.T) { Client.Logout() // Check effects of config and license changes. - restrictTeamInvite := *utils.Cfg.TeamSettings.RestrictTeamInvite + restrictTeamInvite := *th.App.Config().TeamSettings.RestrictTeamInvite isLicensed := utils.IsLicensed() license := utils.License() defer func() { - *utils.Cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite }) utils.SetIsLicensed(isLicensed) utils.SetLicense(license) utils.SetDefaultRolesBasedOnConfig() }() // Set the config so that only team admins can add a user to a team. - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN }) utils.SetDefaultRolesBasedOnConfig() th.LoginBasic() @@ -1328,7 +1328,7 @@ func TestAddTeamMember(t *testing.T) { // Update user to team admin th.UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam) th.App.InvalidateAllCaches() - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1340,7 +1340,7 @@ func TestAddTeamMember(t *testing.T) { CheckNoError(t, resp) // Change permission level to System Admin - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_SYSTEM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_SYSTEM_ADMIN }) utils.SetDefaultRolesBasedOnConfig() // Should not work as team admin. @@ -1354,7 +1354,7 @@ func TestAddTeamMember(t *testing.T) { // Change permission level to All th.UpdateUserToNonTeamAdmin(th.BasicUser, th.BasicTeam) th.App.InvalidateAllCaches() - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_ALL + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_ALL }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1366,7 +1366,7 @@ func TestAddTeamMember(t *testing.T) { CheckNoError(t, resp) // Reset config and license. - *utils.Cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite }) utils.SetIsLicensed(isLicensed) utils.SetLicense(license) utils.SetDefaultRolesBasedOnConfig() @@ -1380,7 +1380,7 @@ func TestAddTeamMember(t *testing.T) { dataObject["id"] = team.Id data := model.MapToJson(dataObject) - hashed := utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hashed := utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) tm, resp = Client.AddTeamMemberFromInvite(hashed, data, "") CheckNoError(t, resp) @@ -1410,7 +1410,7 @@ func TestAddTeamMember(t *testing.T) { // expired data of more than 50 hours dataObject["time"] = fmt.Sprintf("%v", model.GetMillis()-1000*60*60*50) data = model.MapToJson(dataObject) - hashed = utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hashed = utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) tm, resp = Client.AddTeamMemberFromInvite(hashed, data, "") CheckBadRequestStatus(t, resp) @@ -1418,7 +1418,7 @@ func TestAddTeamMember(t *testing.T) { // invalid team id dataObject["id"] = GenerateTestId() data = model.MapToJson(dataObject) - hashed = utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hashed = utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) tm, resp = Client.AddTeamMemberFromInvite(hashed, data, "") CheckBadRequestStatus(t, resp) @@ -1509,18 +1509,18 @@ func TestAddTeamMembers(t *testing.T) { Client.Logout() // Check effects of config and license changes. - restrictTeamInvite := *utils.Cfg.TeamSettings.RestrictTeamInvite + restrictTeamInvite := *th.App.Config().TeamSettings.RestrictTeamInvite isLicensed := utils.IsLicensed() license := utils.License() defer func() { - *utils.Cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite }) utils.SetIsLicensed(isLicensed) utils.SetLicense(license) utils.SetDefaultRolesBasedOnConfig() }() // Set the config so that only team admins can add a user to a team. - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN }) utils.SetDefaultRolesBasedOnConfig() th.LoginBasic() @@ -1542,7 +1542,7 @@ func TestAddTeamMembers(t *testing.T) { // Update user to team admin th.UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam) th.App.InvalidateAllCaches() - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1554,7 +1554,7 @@ func TestAddTeamMembers(t *testing.T) { CheckNoError(t, resp) // Change permission level to System Admin - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_SYSTEM_ADMIN + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_SYSTEM_ADMIN }) utils.SetDefaultRolesBasedOnConfig() // Should not work as team admin. @@ -1568,7 +1568,7 @@ func TestAddTeamMembers(t *testing.T) { // Change permission level to All th.UpdateUserToNonTeamAdmin(th.BasicUser, th.BasicTeam) th.App.InvalidateAllCaches() - *utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_ALL + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_ALL }) utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() @@ -1898,7 +1898,7 @@ func TestInviteUsersToTeam(t *testing.T) { t.Fatal("should return true") } - nameFormat := *utils.Cfg.TeamSettings.TeammateNameDisplay + nameFormat := *th.App.Config().TeamSettings.TeammateNameDisplay expectedSubject := "[Mattermost] " + th.SystemAdminUser.GetDisplayName(nameFormat) + " invited you to join " + th.BasicTeam.DisplayName + " Team" //Check if the email was send to the rigth email address for _, email := range emailList { @@ -1927,11 +1927,11 @@ func TestInviteUsersToTeam(t *testing.T) { } } - restrictCreationToDomains := utils.Cfg.TeamSettings.RestrictCreationToDomains + restrictCreationToDomains := th.App.Config().TeamSettings.RestrictCreationToDomains defer func() { - utils.Cfg.TeamSettings.RestrictCreationToDomains = restrictCreationToDomains + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.RestrictCreationToDomains = restrictCreationToDomains }) }() - utils.Cfg.TeamSettings.RestrictCreationToDomains = "@example.com" + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.RestrictCreationToDomains = "@example.com" }) err := th.App.InviteNewUsersToTeam(emailList, th.BasicTeam.Id, th.BasicUser.Id) diff --git a/api4/user.go b/api4/user.go index 07f223bd6..d17591afa 100644 --- a/api4/user.go +++ b/api4/user.go @@ -112,7 +112,7 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) { return } - etag := user.Etag(utils.Cfg.PrivacySettings.ShowFullName, utils.Cfg.PrivacySettings.ShowEmailAddress) + etag := user.Etag(c.App.Config().PrivacySettings.ShowFullName, c.App.Config().PrivacySettings.ShowEmailAddress) if c.HandleEtag(etag, "Get User", w, r) { return @@ -145,7 +145,7 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) { return } - etag := user.Etag(utils.Cfg.PrivacySettings.ShowFullName, utils.Cfg.PrivacySettings.ShowEmailAddress) + etag := user.Etag(c.App.Config().PrivacySettings.ShowFullName, c.App.Config().PrivacySettings.ShowEmailAddress) if c.HandleEtag(etag, "Get User", w, r) { return @@ -173,7 +173,7 @@ func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) { return } - etag := user.Etag(utils.Cfg.PrivacySettings.ShowFullName, utils.Cfg.PrivacySettings.ShowEmailAddress) + etag := user.Etag(c.App.Config().PrivacySettings.ShowFullName, c.App.Config().PrivacySettings.ShowEmailAddress) if c.HandleEtag(etag, "Get User", w, r) { return @@ -235,17 +235,17 @@ func setProfileImage(c *Context, w http.ResponseWriter, r *http.Request) { return } - if len(*utils.Cfg.FileSettings.DriverName) == 0 { + if len(*c.App.Config().FileSettings.DriverName) == 0 { c.Err = model.NewAppError("uploadProfileImage", "api.user.upload_profile_user.storage.app_error", nil, "", http.StatusNotImplemented) return } - if r.ContentLength > *utils.Cfg.FileSettings.MaxFileSize { + if r.ContentLength > *c.App.Config().FileSettings.MaxFileSize { c.Err = model.NewAppError("uploadProfileImage", "api.user.upload_profile_user.too_large.app_error", nil, "", http.StatusRequestEntityTooLarge) return } - if err := r.ParseMultipartForm(*utils.Cfg.FileSettings.MaxFileSize); err != nil { + if err := r.ParseMultipartForm(*c.App.Config().FileSettings.MaxFileSize); err != nil { c.Err = model.NewAppError("uploadProfileImage", "api.user.upload_profile_user.parse.app_error", nil, err.Error(), http.StatusInternalServerError) return } @@ -453,8 +453,8 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) { searchOptions[store.USER_SEARCH_OPTION_ALLOW_INACTIVE] = props.AllowInactive if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { - hideFullName := !utils.Cfg.PrivacySettings.ShowFullName - hideEmail := !utils.Cfg.PrivacySettings.ShowEmailAddress + hideFullName := !c.App.Config().PrivacySettings.ShowFullName + hideEmail := !c.App.Config().PrivacySettings.ShowEmailAddress if hideFullName && hideEmail { searchOptions[store.USER_SEARCH_OPTION_NAMES_ONLY_NO_FULL_NAME] = true @@ -483,7 +483,7 @@ func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) { searchOptions := map[string]bool{} - hideFullName := !utils.Cfg.PrivacySettings.ShowFullName + hideFullName := !c.App.Config().PrivacySettings.ShowFullName if hideFullName && !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { searchOptions[store.USER_SEARCH_OPTION_NAMES_ONLY_NO_FULL_NAME] = true } else { @@ -701,7 +701,7 @@ func checkUserMfa(c *Context, w http.ResponseWriter, r *http.Request) { resp := map[string]interface{}{} resp["mfa_required"] = false - if !utils.IsLicensed() || !*utils.License().Features.MFA || !*utils.Cfg.ServiceSettings.EnableMultifactorAuthentication { + if !utils.IsLicensed() || !*utils.License().Features.MFA || !*c.App.Config().ServiceSettings.EnableMultifactorAuthentication { w.Write([]byte(model.StringInterfaceToJson(resp))) return } @@ -1022,9 +1022,9 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) { } c.App.ClearSessionCacheForUser(c.Session.UserId) - c.Session.SetExpireInDays(*utils.Cfg.ServiceSettings.SessionLengthMobileInDays) + c.Session.SetExpireInDays(*c.App.Config().ServiceSettings.SessionLengthMobileInDays) - maxAge := *utils.Cfg.ServiceSettings.SessionLengthMobileInDays * 60 * 60 * 24 + maxAge := *c.App.Config().ServiceSettings.SessionLengthMobileInDays * 60 * 60 * 24 secure := false if app.GetProtocol(r) == "https" { diff --git a/api4/user_test.go b/api4/user_test.go index 3a1579e14..ceaf3f038 100644 --- a/api4/user_test.go +++ b/api4/user_test.go @@ -63,14 +63,14 @@ func TestCreateUser(t *testing.T) { CheckErrorMessage(t, resp, "model.user.is_valid.email.app_error") CheckBadRequestStatus(t, resp) - openServer := *utils.Cfg.TeamSettings.EnableOpenServer - canCreateAccount := utils.Cfg.TeamSettings.EnableUserCreation + openServer := *th.App.Config().TeamSettings.EnableOpenServer + canCreateAccount := th.App.Config().TeamSettings.EnableUserCreation defer func() { - *utils.Cfg.TeamSettings.EnableOpenServer = openServer - utils.Cfg.TeamSettings.EnableUserCreation = canCreateAccount + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = openServer }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableUserCreation = canCreateAccount }) }() - *utils.Cfg.TeamSettings.EnableOpenServer = false - utils.Cfg.TeamSettings.EnableUserCreation = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = false }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableUserCreation = false }) user2 := &model.User{Email: GenerateTestEmail(), Password: "Password1", Username: GenerateTestUsername()} _, resp = AdminClient.CreateUser(user2) @@ -101,7 +101,7 @@ func TestCreateUserWithHash(t *testing.T) { props["name"] = th.BasicTeam.Name props["time"] = fmt.Sprintf("%v", model.GetMillis()) data := model.MapToJson(props) - hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) ruser, resp := Client.CreateUserWithHash(&user, hash, data) CheckNoError(t, resp) @@ -127,7 +127,7 @@ func TestCreateUserWithHash(t *testing.T) { props["name"] = th.BasicTeam.Name props["time"] = fmt.Sprintf("%v", model.GetMillis()) data := model.MapToJson(props) - hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) _, resp := Client.CreateUserWithHash(&user, "", data) CheckBadRequestStatus(t, resp) @@ -150,7 +150,7 @@ func TestCreateUserWithHash(t *testing.T) { props["name"] = th.BasicTeam.Name props["time"] = fmt.Sprintf("%v", past49Hours) data := model.MapToJson(props) - hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) _, resp := Client.CreateUserWithHash(&user, hash, data) CheckInternalErrorStatus(t, resp) @@ -183,13 +183,13 @@ func TestCreateUserWithHash(t *testing.T) { props["name"] = th.BasicTeam.Name props["time"] = fmt.Sprintf("%v", model.GetMillis()) data := model.MapToJson(props) - hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) - canCreateAccount := utils.Cfg.TeamSettings.EnableUserCreation + canCreateAccount := th.App.Config().TeamSettings.EnableUserCreation defer func() { - utils.Cfg.TeamSettings.EnableUserCreation = canCreateAccount + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableUserCreation = canCreateAccount }) }() - utils.Cfg.TeamSettings.EnableUserCreation = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableUserCreation = false }) _, resp := Client.CreateUserWithHash(&user, hash, data) CheckNotImplementedStatus(t, resp) @@ -206,13 +206,13 @@ func TestCreateUserWithHash(t *testing.T) { props["name"] = th.BasicTeam.Name props["time"] = fmt.Sprintf("%v", model.GetMillis()) data := model.MapToJson(props) - hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) + hash := utils.HashSha256(fmt.Sprintf("%v:%v", data, th.App.Config().EmailSettings.InviteSalt)) - openServer := *utils.Cfg.TeamSettings.EnableOpenServer + openServer := *th.App.Config().TeamSettings.EnableOpenServer defer func() { - *utils.Cfg.TeamSettings.EnableOpenServer = openServer + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = openServer }) }() - *utils.Cfg.TeamSettings.EnableOpenServer = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = false }) ruser, resp := Client.CreateUserWithHash(&user, hash, data) CheckNoError(t, resp) @@ -291,11 +291,11 @@ func TestCreateUserWithInviteId(t *testing.T) { t.Run("EnableUserCreationDisable", func(t *testing.T) { user := model.User{Email: GenerateTestEmail(), Nickname: "Corey Hulen", Password: "hello1", Username: GenerateTestUsername(), Roles: model.ROLE_SYSTEM_ADMIN.Id + " " + model.ROLE_SYSTEM_USER.Id} - canCreateAccount := utils.Cfg.TeamSettings.EnableUserCreation + canCreateAccount := th.App.Config().TeamSettings.EnableUserCreation defer func() { - utils.Cfg.TeamSettings.EnableUserCreation = canCreateAccount + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableUserCreation = canCreateAccount }) }() - utils.Cfg.TeamSettings.EnableUserCreation = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.EnableUserCreation = false }) inviteId := th.BasicTeam.InviteId @@ -307,11 +307,11 @@ func TestCreateUserWithInviteId(t *testing.T) { t.Run("EnableOpenServerDisable", func(t *testing.T) { user := model.User{Email: GenerateTestEmail(), Nickname: "Corey Hulen", Password: "hello1", Username: GenerateTestUsername(), Roles: model.ROLE_SYSTEM_ADMIN.Id + " " + model.ROLE_SYSTEM_USER.Id} - openServer := *utils.Cfg.TeamSettings.EnableOpenServer + openServer := *th.App.Config().TeamSettings.EnableOpenServer defer func() { - *utils.Cfg.TeamSettings.EnableOpenServer = openServer + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = openServer }) }() - *utils.Cfg.TeamSettings.EnableOpenServer = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = false }) inviteId := th.BasicTeam.InviteId @@ -374,14 +374,14 @@ func TestGetUser(t *testing.T) { CheckNotFoundStatus(t, resp) // Check against privacy config settings - emailPrivacy := utils.Cfg.PrivacySettings.ShowEmailAddress - namePrivacy := utils.Cfg.PrivacySettings.ShowFullName + emailPrivacy := th.App.Config().PrivacySettings.ShowEmailAddress + namePrivacy := th.App.Config().PrivacySettings.ShowFullName defer func() { - utils.Cfg.PrivacySettings.ShowEmailAddress = emailPrivacy - utils.Cfg.PrivacySettings.ShowFullName = namePrivacy + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = emailPrivacy }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = namePrivacy }) }() - utils.Cfg.PrivacySettings.ShowEmailAddress = false - utils.Cfg.PrivacySettings.ShowFullName = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = false }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = false }) ruser, resp = Client.GetUser(user.Id, "") CheckNoError(t, resp) @@ -435,14 +435,14 @@ func TestGetUserByUsername(t *testing.T) { CheckNotFoundStatus(t, resp) // Check against privacy config settings - emailPrivacy := utils.Cfg.PrivacySettings.ShowEmailAddress - namePrivacy := utils.Cfg.PrivacySettings.ShowFullName + emailPrivacy := th.App.Config().PrivacySettings.ShowEmailAddress + namePrivacy := th.App.Config().PrivacySettings.ShowFullName defer func() { - utils.Cfg.PrivacySettings.ShowEmailAddress = emailPrivacy - utils.Cfg.PrivacySettings.ShowFullName = namePrivacy + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = emailPrivacy }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = namePrivacy }) }() - utils.Cfg.PrivacySettings.ShowEmailAddress = false - utils.Cfg.PrivacySettings.ShowFullName = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = false }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = false }) ruser, resp = Client.GetUserByUsername(user.Username, "") CheckNoError(t, resp) @@ -499,14 +499,14 @@ func TestGetUserByEmail(t *testing.T) { CheckNotFoundStatus(t, resp) // Check against privacy config settings - emailPrivacy := utils.Cfg.PrivacySettings.ShowEmailAddress - namePrivacy := utils.Cfg.PrivacySettings.ShowFullName + emailPrivacy := th.App.Config().PrivacySettings.ShowEmailAddress + namePrivacy := th.App.Config().PrivacySettings.ShowFullName defer func() { - utils.Cfg.PrivacySettings.ShowEmailAddress = emailPrivacy - utils.Cfg.PrivacySettings.ShowFullName = namePrivacy + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = emailPrivacy }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = namePrivacy }) }() - utils.Cfg.PrivacySettings.ShowEmailAddress = false - utils.Cfg.PrivacySettings.ShowFullName = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = false }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = false }) ruser, resp = Client.GetUserByEmail(user.Email, "") CheckNoError(t, resp) @@ -666,14 +666,14 @@ func TestSearchUsers(t *testing.T) { search.Term = th.BasicUser.Username - emailPrivacy := utils.Cfg.PrivacySettings.ShowEmailAddress - namePrivacy := utils.Cfg.PrivacySettings.ShowFullName + emailPrivacy := th.App.Config().PrivacySettings.ShowEmailAddress + namePrivacy := th.App.Config().PrivacySettings.ShowFullName defer func() { - utils.Cfg.PrivacySettings.ShowEmailAddress = emailPrivacy - utils.Cfg.PrivacySettings.ShowFullName = namePrivacy + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = emailPrivacy }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = namePrivacy }) }() - utils.Cfg.PrivacySettings.ShowEmailAddress = false - utils.Cfg.PrivacySettings.ShowFullName = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowEmailAddress = false }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = false }) _, err = th.App.UpdateActiveNoLdap(th.BasicUser2.Id, true) if err != nil { @@ -824,11 +824,11 @@ func TestAutocompleteUsers(t *testing.T) { CheckNoError(t, resp) // Check against privacy config settings - namePrivacy := utils.Cfg.PrivacySettings.ShowFullName + namePrivacy := th.App.Config().PrivacySettings.ShowFullName defer func() { - utils.Cfg.PrivacySettings.ShowFullName = namePrivacy + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = namePrivacy }) }() - utils.Cfg.PrivacySettings.ShowFullName = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.PrivacySettings.ShowFullName = false }) th.LoginBasic() @@ -1544,17 +1544,17 @@ func TestUpdateUserMfa(t *testing.T) { isLicensed := utils.IsLicensed() license := utils.License() - enableMfa := *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication + enableMfa := *th.App.Config().ServiceSettings.EnableMultifactorAuthentication defer func() { utils.SetIsLicensed(isLicensed) utils.SetLicense(license) - *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = enableMfa + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = enableMfa }) }() utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() *utils.License().Features.MFA = true - *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = true }) session, _ := th.App.GetSession(Client.AuthToken) session.IsOAuth = true @@ -1616,17 +1616,17 @@ func TestCheckUserMfa(t *testing.T) { isLicensed := utils.IsLicensed() license := utils.License() - enableMfa := *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication + enableMfa := *th.App.Config().ServiceSettings.EnableMultifactorAuthentication defer func() { utils.SetIsLicensed(isLicensed) utils.SetLicense(license) - *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = enableMfa + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = enableMfa }) }() utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() *utils.License().Features.MFA = true - *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = true }) th.LoginBasic() @@ -1663,17 +1663,17 @@ func TestGenerateMfaSecret(t *testing.T) { isLicensed := utils.IsLicensed() license := utils.License() - enableMfa := *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication + enableMfa := *th.App.Config().ServiceSettings.EnableMultifactorAuthentication defer func() { utils.SetIsLicensed(isLicensed) utils.SetLicense(license) - *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = enableMfa + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = enableMfa }) }() utils.SetIsLicensed(true) utils.SetLicense(&model.License{Features: &model.Features{}}) utils.License().Features.SetDefaults() *utils.License().Features.MFA = true - *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = true }) _, resp = Client.GenerateMfaSecret(model.NewId()) CheckForbiddenStatus(t, resp) @@ -1733,11 +1733,11 @@ func TestUpdateUserPassword(t *testing.T) { th.LoginBasic() // Test lockout - passwordAttempts := *utils.Cfg.ServiceSettings.MaximumLoginAttempts + passwordAttempts := *th.App.Config().ServiceSettings.MaximumLoginAttempts defer func() { - *utils.Cfg.ServiceSettings.MaximumLoginAttempts = passwordAttempts + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.MaximumLoginAttempts = passwordAttempts }) }() - *utils.Cfg.ServiceSettings.MaximumLoginAttempts = 2 + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.MaximumLoginAttempts = 2 }) // Fail twice _, resp = Client.UpdateUserPassword(th.BasicUser.Id, "badpwd", "newpwd") @@ -2175,11 +2175,11 @@ func TestSwitchAccount(t *testing.T) { defer th.TearDown() Client := th.Client - enableGitLab := utils.Cfg.GitLabSettings.Enable + enableGitLab := th.App.Config().GitLabSettings.Enable defer func() { - utils.Cfg.GitLabSettings.Enable = enableGitLab + th.App.UpdateConfig(func(cfg *model.Config) { cfg.GitLabSettings.Enable = enableGitLab }) }() - utils.Cfg.GitLabSettings.Enable = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.GitLabSettings.Enable = true }) Client.Logout() @@ -2269,11 +2269,11 @@ func TestCreateUserAccessToken(t *testing.T) { testDescription := "test token" - enableUserAccessTokens := *utils.Cfg.ServiceSettings.EnableUserAccessTokens + enableUserAccessTokens := *th.App.Config().ServiceSettings.EnableUserAccessTokens defer func() { - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens }) }() - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) _, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) CheckForbiddenStatus(t, resp) @@ -2286,10 +2286,10 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id) - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = false }) _, resp = Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) CheckNotImplementedStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) rtoken, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) CheckNoError(t, resp) @@ -2352,11 +2352,11 @@ func TestGetUserAccessToken(t *testing.T) { testDescription := "test token" - enableUserAccessTokens := *utils.Cfg.ServiceSettings.EnableUserAccessTokens + enableUserAccessTokens := *th.App.Config().ServiceSettings.EnableUserAccessTokens defer func() { - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens }) }() - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) _, resp := Client.GetUserAccessToken("123") CheckBadRequestStatus(t, resp) @@ -2423,11 +2423,11 @@ func TestRevokeUserAccessToken(t *testing.T) { testDescription := "test token" - enableUserAccessTokens := *utils.Cfg.ServiceSettings.EnableUserAccessTokens + enableUserAccessTokens := *th.App.Config().ServiceSettings.EnableUserAccessTokens defer func() { - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens }) }() - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id) token, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) @@ -2470,11 +2470,11 @@ func TestUserAccessTokenInactiveUser(t *testing.T) { testDescription := "test token" - enableUserAccessTokens := *utils.Cfg.ServiceSettings.EnableUserAccessTokens + enableUserAccessTokens := *th.App.Config().ServiceSettings.EnableUserAccessTokens defer func() { - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens }) }() - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id) token, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) @@ -2497,11 +2497,11 @@ func TestUserAccessTokenDisableConfig(t *testing.T) { testDescription := "test token" - enableUserAccessTokens := *utils.Cfg.ServiceSettings.EnableUserAccessTokens + enableUserAccessTokens := *th.App.Config().ServiceSettings.EnableUserAccessTokens defer func() { - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = enableUserAccessTokens }) }() - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id) token, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) @@ -2512,7 +2512,7 @@ func TestUserAccessTokenDisableConfig(t *testing.T) { _, resp = Client.GetMe("") CheckNoError(t, resp) - *utils.Cfg.ServiceSettings.EnableUserAccessTokens = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = false }) _, resp = Client.GetMe("") CheckUnauthorizedStatus(t, resp) diff --git a/api4/webhook.go b/api4/webhook.go index 39d0cbff4..1921659ce 100644 --- a/api4/webhook.go +++ b/api4/webhook.go @@ -459,7 +459,7 @@ func incomingWebhook(c *Context, w http.ResponseWriter, r *http.Request) { payload = r.Body } - if utils.Cfg.LogSettings.EnableWebhookDebugging { + if c.App.Config().LogSettings.EnableWebhookDebugging { var err error payload, err = utils.InfoReader( payload, diff --git a/api4/webhook_test.go b/api4/webhook_test.go index f8d33e984..6740ee097 100644 --- a/api4/webhook_test.go +++ b/api4/webhook_test.go @@ -19,15 +19,15 @@ func TestCreateIncomingWebhook(t *testing.T) { defer th.TearDown() Client := th.Client - enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableIncomingHooks := th.App.Config().ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} @@ -60,13 +60,13 @@ func TestCreateIncomingWebhook(t *testing.T) { _, resp = Client.CreateIncomingWebhook(hook) CheckForbiddenStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.CreateIncomingWebhook(hook) CheckNoError(t, resp) - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = false }) _, resp = Client.CreateIncomingWebhook(hook) CheckNotImplementedStatus(t, resp) } @@ -76,15 +76,15 @@ func TestGetIncomingWebhooks(t *testing.T) { defer th.TearDown() Client := th.Client - enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableIncomingHooks := th.App.Config().ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} @@ -136,7 +136,7 @@ func TestGetIncomingWebhooks(t *testing.T) { _, resp = Client.GetIncomingWebhooks(0, 1000, "") CheckForbiddenStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") @@ -158,15 +158,15 @@ func TestGetIncomingWebhook(t *testing.T) { defer th.TearDown() Client := th.SystemAdminClient - enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableIncomingHooks := th.App.Config().ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() var resp *model.Response @@ -206,15 +206,15 @@ func TestDeleteIncomingWebhook(t *testing.T) { defer th.TearDown() Client := th.SystemAdminClient - enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableIncomingHooks := th.App.Config().ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() var resp *model.Response @@ -266,15 +266,15 @@ func TestCreateOutgoingWebhook(t *testing.T) { defer th.TearDown() Client := th.Client - enableOutgoingHooks := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOutgoingHooks := th.App.Config().ServiceSettings.EnableOutgoingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} @@ -303,13 +303,13 @@ func TestCreateOutgoingWebhook(t *testing.T) { _, resp = Client.CreateOutgoingWebhook(hook) CheckForbiddenStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.CreateOutgoingWebhook(hook) CheckNoError(t, resp) - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = false }) _, resp = Client.CreateOutgoingWebhook(hook) CheckNotImplementedStatus(t, resp) } @@ -319,15 +319,15 @@ func TestGetOutgoingWebhooks(t *testing.T) { defer th.TearDown() Client := th.Client - enableOutgoingHooks := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOutgoingHooks := th.App.Config().ServiceSettings.EnableOutgoingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} @@ -396,7 +396,7 @@ func TestGetOutgoingWebhooks(t *testing.T) { _, resp = Client.GetOutgoingWebhooks(0, 1000, "") CheckForbiddenStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() _, resp = Client.GetOutgoingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") @@ -424,15 +424,15 @@ func TestGetOutgoingWebhook(t *testing.T) { defer th.TearDown() Client := th.Client - enableOutgoingHooks := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOutgoingHooks := th.App.Config().ServiceSettings.EnableOutgoingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} @@ -463,15 +463,15 @@ func TestUpdateIncomingHook(t *testing.T) { defer th.TearDown() Client := th.Client - enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableIncomingHooks := th.App.Config().ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() hook1 := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} @@ -555,10 +555,10 @@ func TestUpdateIncomingHook(t *testing.T) { CheckForbiddenStatus(t, resp) }) - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) t.Run("OnlyAdminIntegrationsDisabled", func(t *testing.T) { - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() t.Run("UpdateHookOfSameUser", func(t *testing.T) { @@ -577,7 +577,7 @@ func TestUpdateIncomingHook(t *testing.T) { }) }) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() Client.Logout() @@ -592,13 +592,13 @@ func TestUpdateIncomingHook(t *testing.T) { }) t.Run("IncomingHooksDisabled", func(t *testing.T) { - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = false }) _, resp := Client.UpdateIncomingWebhook(createdHook) CheckNotImplementedStatus(t, resp) CheckErrorMessage(t, resp, "api.incoming_webhook.disabled.app_error") }) - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) t.Run("PrivateChannel", func(t *testing.T) { privateChannel := th.CreatePrivateChannel() @@ -632,15 +632,15 @@ func TestRegenOutgoingHookToken(t *testing.T) { defer th.TearDown() Client := th.Client - enableOutgoingHooks := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOutgoingHooks := th.App.Config().ServiceSettings.EnableOutgoingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} @@ -663,7 +663,7 @@ func TestRegenOutgoingHookToken(t *testing.T) { _, resp = Client.RegenOutgoingHookToken(rhook.Id) CheckForbiddenStatus(t, resp) - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = false }) _, resp = th.SystemAdminClient.RegenOutgoingHookToken(rhook.Id) CheckNotImplementedStatus(t, resp) } @@ -673,15 +673,15 @@ func TestUpdateOutgoingHook(t *testing.T) { defer th.TearDown() Client := th.Client - enableOutgoingHooks := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableOutgoingHooks := th.App.Config().ServiceSettings.EnableOutgoingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = enableOutgoingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() createdHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, @@ -705,12 +705,12 @@ func TestUpdateOutgoingHook(t *testing.T) { }) t.Run("OutgoingHooksDisabled", func(t *testing.T) { - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = false + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = false }) _, resp := th.SystemAdminClient.UpdateOutgoingWebhook(createdHook) CheckNotImplementedStatus(t, resp) }) - utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOutgoingWebhooks = true }) t.Run("RetainCreateAt", func(t *testing.T) { hook2 := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"rats"}} @@ -755,7 +755,7 @@ func TestUpdateOutgoingHook(t *testing.T) { CheckForbiddenStatus(t, resp) }) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = false }) utils.SetDefaultRolesBasedOnConfig() hook2 := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"rats2"}} @@ -766,7 +766,7 @@ func TestUpdateOutgoingHook(t *testing.T) { _, resp = Client.UpdateOutgoingWebhook(createdHook2) CheckForbiddenStatus(t, resp) - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() Client.Logout() @@ -840,15 +840,15 @@ func TestDeleteOutgoingHook(t *testing.T) { defer th.TearDown() Client := th.SystemAdminClient - enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks - enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + enableIncomingHooks := th.App.Config().ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := th.App.Config().ServiceSettings.EnableOnlyAdminIntegrations defer func() { - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks - utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks }) + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks }) utils.SetDefaultRolesBasedOnConfig() }() - utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true - *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = true }) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOnlyAdminIntegrations = true }) utils.SetDefaultRolesBasedOnConfig() var resp *model.Response diff --git a/api4/webrtc_test.go b/api4/webrtc_test.go index 4e2f28fb5..660bb6f62 100644 --- a/api4/webrtc_test.go +++ b/api4/webrtc_test.go @@ -4,9 +4,8 @@ package api4 import ( + "github.com/mattermost/mattermost-server/model" "testing" - - "github.com/mattermost/mattermost-server/utils" ) func TestGetWebrtcToken(t *testing.T) { @@ -18,11 +17,11 @@ func TestGetWebrtcToken(t *testing.T) { defer th.TearDown() Client := th.Client - enableWebrtc := *utils.Cfg.WebrtcSettings.Enable + enableWebrtc := *th.App.Config().WebrtcSettings.Enable defer func() { - *utils.Cfg.WebrtcSettings.Enable = enableWebrtc + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.WebrtcSettings.Enable = enableWebrtc }) }() - *utils.Cfg.WebrtcSettings.Enable = false + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.WebrtcSettings.Enable = false }) _, resp := Client.GetWebrtcToken() CheckNotImplementedStatus(t, resp) -- cgit v1.2.3-1-g7c22