From f2c180390599e66fee2f1a8c1a4ab52eea920c51 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Mon, 16 Jul 2018 16:56:55 -0400 Subject: Make plugin IDs case insensitive (#9117) --- api4/plugin_test.go | 4 ++++ app/plugin.go | 5 +++++ model/manifest.go | 3 +++ model/manifest_test.go | 3 +++ 4 files changed, 15 insertions(+) diff --git a/api4/plugin_test.go b/api4/plugin_test.go index f9b0f5a07..9500b2019 100644 --- a/api4/plugin_test.go +++ b/api4/plugin_test.go @@ -114,6 +114,10 @@ func TestPlugin(t *testing.T) { CheckBadRequestStatus(t, resp) assert.False(t, ok) + ok, resp = th.SystemAdminClient.EnablePlugin("JUNK") + CheckBadRequestStatus(t, resp) + assert.False(t, ok) + // Successful deactivate ok, resp = th.SystemAdminClient.DisablePlugin(manifest.Id) CheckNoError(t, resp) diff --git a/app/plugin.go b/app/plugin.go index d68579311..8fce76f39 100644 --- a/app/plugin.go +++ b/app/plugin.go @@ -6,6 +6,7 @@ package app import ( "net/http" "os" + "strings" "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" @@ -154,6 +155,8 @@ func (a *App) EnablePlugin(id string) *model.AppError { return model.NewAppError("EnablePlugin", "app.plugin.config.app_error", nil, err.Error(), http.StatusInternalServerError) } + id = strings.ToLower(id) + var manifest *model.Manifest for _, p := range plugins { if p.Manifest.Id == id { @@ -198,6 +201,8 @@ func (a *App) DisablePlugin(id string) *model.AppError { return model.NewAppError("DisablePlugin", "app.plugin.config.app_error", nil, err.Error(), http.StatusInternalServerError) } + id = strings.ToLower(id) + var manifest *model.Manifest for _, p := range plugins { if p.Manifest.Id == id { diff --git a/model/manifest.go b/model/manifest.go index d6a064d4e..d494df466 100644 --- a/model/manifest.go +++ b/model/manifest.go @@ -9,6 +9,7 @@ import ( "io/ioutil" "os" "path/filepath" + "strings" "gopkg.in/yaml.v2" ) @@ -201,6 +202,7 @@ func FindManifest(dir string) (manifest *Manifest, path string, err error) { return } manifest = &parsed + manifest.Id = strings.ToLower(manifest.Id) return } @@ -220,5 +222,6 @@ func FindManifest(dir string) (manifest *Manifest, path string, err error) { return } manifest = &parsed + manifest.Id = strings.ToLower(manifest.Id) return } diff --git a/model/manifest_test.go b/model/manifest_test.go index b63e388bc..0c55b5b66 100644 --- a/model/manifest_test.go +++ b/model/manifest_test.go @@ -27,9 +27,11 @@ func TestFindManifest(t *testing.T) { {"foo", "bar", true, true}, {"plugin.json", "bar", true, false}, {"plugin.json", `{"id": "foo"}`, false, false}, + {"plugin.json", `{"id": "FOO"}`, false, false}, {"plugin.yaml", `id: foo`, false, false}, {"plugin.yaml", "bar", true, false}, {"plugin.yml", `id: foo`, false, false}, + {"plugin.yml", `id: FOO`, false, false}, {"plugin.yml", "bar", true, false}, } { dir, err := ioutil.TempDir("", "mm-plugin-test") @@ -54,6 +56,7 @@ func TestFindManifest(t *testing.T) { if !tc.ExpectError { require.NotNil(t, m, tc.Filename) assert.NotEmpty(t, m.Id, tc.Filename) + assert.Equal(t, strings.ToLower(m.Id), m.Id) } } } -- cgit v1.2.3-1-g7c22