From 82a8bd99cc5fe59fe4577c9b0d2c06a82c89e628 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Tue, 29 Aug 2017 05:48:38 -0400 Subject: Enforce channel display name limits on slash command (#7309) --- app/command_channel_rename.go | 4 ++++ app/command_channel_rename_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 app/command_channel_rename_test.go (limited to 'app') 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) + } +} -- cgit v1.2.3-1-g7c22