summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-08-29 05:48:38 -0400
committerSaturnino Abril <saturnino.abril@gmail.com>2017-08-29 17:48:38 +0800
commit82a8bd99cc5fe59fe4577c9b0d2c06a82c89e628 (patch)
treecfea354f60ce09ae143e46c52d0fb3460c61926c
parentce77d836fc7968f84041bc33587e54098b745357 (diff)
downloadchat-82a8bd99cc5fe59fe4577c9b0d2c06a82c89e628.tar.gz
chat-82a8bd99cc5fe59fe4577c9b0d2c06a82c89e628.tar.bz2
chat-82a8bd99cc5fe59fe4577c9b0d2c06a82c89e628.zip
Enforce channel display name limits on slash command (#7309)
-rw-r--r--app/command_channel_rename.go4
-rw-r--r--app/command_channel_rename_test.go31
-rw-r--r--i18n/en.json8
-rw-r--r--model/channel.go1
4 files changed, 44 insertions, 0 deletions
diff --git a/app/command_channel_rename.go b/app/command_channel_rename.go
index f18b127ad..ef034b399 100644
--- a/app/command_channel_rename.go
+++ b/app/command_channel_rename.go
@@ -53,6 +53,10 @@ func (me *RenameProvider) DoCommand(args *model.CommandArgs, message string) *mo
if len(message) == 0 {
return &model.CommandResponse{Text: args.T("api.command_channel_rename.message.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ } else if len(message) > model.CHANNEL_NAME_UI_MAX_LENGTH {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.too_long.app_error", map[string]interface{}{"Length": len(message)}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ } else if len(message) < model.CHANNEL_NAME_MIN_LENGTH {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.too_short.app_error", map[string]interface{}{"Length": len(message)}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
patch := &model.ChannelPatch{
diff --git a/app/command_channel_rename_test.go b/app/command_channel_rename_test.go
new file mode 100644
index 000000000..95a4f1500
--- /dev/null
+++ b/app/command_channel_rename_test.go
@@ -0,0 +1,31 @@
+package app
+
+import (
+ "testing"
+
+ "github.com/mattermost/platform/model"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestRenameProviderDoCommand(t *testing.T) {
+ th := Setup().InitBasic()
+
+ rp := RenameProvider{}
+ args := &model.CommandArgs{
+ T: func(s string, args ...interface{}) string { return s },
+ ChannelId: th.BasicChannel.Id,
+ Session: model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{&model.TeamMember{TeamId: th.BasicTeam.Id, Roles: model.ROLE_TEAM_USER.Id}}},
+ }
+
+ // Blank text is a success
+ for msg, expected := range map[string]string{
+ "": "api.command_channel_rename.message.app_error",
+ "o": "api.command_channel_rename.too_short.app_error",
+ "joram": "",
+ "1234567890123456789012": "",
+ "12345678901234567890123": "api.command_channel_rename.too_long.app_error",
+ } {
+ actual := rp.DoCommand(args, msg).Text
+ assert.Equal(t, expected, actual)
+ }
+}
diff --git a/i18n/en.json b/i18n/en.json
index 41f0790b4..7624183b3 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -584,6 +584,14 @@
"translation": "A message must be provided with the /rename command."
},
{
+ "id": "api.command_channel_rename.too_long.app_error",
+ "translation": "Channel name must be {{.Length}} or fewer characters"
+ },
+ {
+ "id": "api.command_channel_rename.too_short.app_error",
+ "translation": "Channel name must be {{.Length}} or more characters"
+ },
+ {
"id": "api.command_channel_rename.name",
"translation": "rename"
},
diff --git a/model/channel.go b/model/channel.go
index 48abd1070..2c73e747a 100644
--- a/model/channel.go
+++ b/model/channel.go
@@ -24,6 +24,7 @@ const (
CHANNEL_DISPLAY_NAME_MAX_RUNES = 64
CHANNEL_NAME_MIN_LENGTH = 2
CHANNEL_NAME_MAX_LENGTH = 64
+ CHANNEL_NAME_UI_MAX_LENGTH = 22
CHANNEL_HEADER_MAX_RUNES = 1024
CHANNEL_PURPOSE_MAX_RUNES = 250
CHANNEL_CACHE_SIZE = 25000