summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2018-07-16 16:56:55 -0400
committerGitHub <noreply@github.com>2018-07-16 16:56:55 -0400
commitf2c180390599e66fee2f1a8c1a4ab52eea920c51 (patch)
treeb89a130b3b26d6a739eaa66dc2e06315970628ed
parent275731578e72d2c6e12cfb2fc315d3446474faec (diff)
downloadchat-f2c180390599e66fee2f1a8c1a4ab52eea920c51.tar.gz
chat-f2c180390599e66fee2f1a8c1a4ab52eea920c51.tar.bz2
chat-f2c180390599e66fee2f1a8c1a4ab52eea920c51.zip
Make plugin IDs case insensitive (#9117)
-rw-r--r--api4/plugin_test.go4
-rw-r--r--app/plugin.go5
-rw-r--r--model/manifest.go3
-rw-r--r--model/manifest_test.go3
4 files changed, 15 insertions, 0 deletions
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)
}
}
}