From d23c7ed2a3203d67f84cff14b06cf6585dd56116 Mon Sep 17 00:00:00 2001 From: Julien Tant <785518+JulienTant@users.noreply.github.com> Date: Tue, 6 Sep 2022 08:43:34 -0700 Subject: [PATCH] [MM-46663] Only enable marketplace command completion when config allows it (#20919) --- app/slashcommands/command_marketplace.go | 8 ++- app/slashcommands/command_marketplace_test.go | 60 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 app/slashcommands/command_marketplace_test.go diff --git a/app/slashcommands/command_marketplace.go b/app/slashcommands/command_marketplace.go index 29600ce640..9a6470982f 100644 --- a/app/slashcommands/command_marketplace.go +++ b/app/slashcommands/command_marketplace.go @@ -26,9 +26,15 @@ func (h *MarketplaceProvider) GetTrigger() string { } func (h *MarketplaceProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command { + enabled := false + pluginSettings := a.Config().PluginSettings + if *pluginSettings.Enable && *pluginSettings.EnableMarketplace { + enabled = true + } + return &model.Command{ Trigger: CmdMarketplace, - AutoComplete: true, + AutoComplete: enabled, AutoCompleteDesc: T("api.command_marketplace.desc"), DisplayName: T("api.command_marketplace.name"), } diff --git a/app/slashcommands/command_marketplace_test.go b/app/slashcommands/command_marketplace_test.go new file mode 100644 index 0000000000..d14a2d1613 --- /dev/null +++ b/app/slashcommands/command_marketplace_test.go @@ -0,0 +1,60 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +package slashcommands + +import ( + "testing" + + "github.com/mattermost/mattermost-server/v6/model" + "github.com/stretchr/testify/require" +) + +func TestMarketplaceProviderGetCommand(t *testing.T) { + th := setup(t).initBasic() + defer th.tearDown() + + mp := MarketplaceProvider{} + + testCases := []struct { + TestName string + + PluginEnabled bool + MarketplaceEnabled bool + + MustAutocomplete bool + }{ + { + "All true", + true, true, + true, + }, + { + "Plugin false", + false, true, + false, + }, + { + "Marketplace false", + true, false, + false, + }, + { + "All false", + false, false, + false, + }, + } + + for _, tc := range testCases { + t.Run(tc.TestName, func(t *testing.T) { + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.PluginSettings.Enable = tc.PluginEnabled + *cfg.PluginSettings.EnableMarketplace = tc.MarketplaceEnabled + }) + + cmd := mp.GetCommand(th.App, th.Context.T) + require.Equal(t, tc.MustAutocomplete, cmd.AutoComplete) + }) + } +}