github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/app/slashcommands/command_channel_rename_test.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package slashcommands
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  
    12  	"github.com/masterhung0112/hk_server/v5/model"
    13  )
    14  
    15  func TestRenameProviderDoCommand(t *testing.T) {
    16  	th := setup(t).initBasic()
    17  	defer th.tearDown()
    18  
    19  	th.addPermissionToRole(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID)
    20  
    21  	rp := RenameProvider{}
    22  	args := &model.CommandArgs{
    23  		T:         func(s string, args ...interface{}) string { return s },
    24  		ChannelId: th.BasicChannel.Id,
    25  		UserId:    th.BasicUser.Id,
    26  	}
    27  
    28  	// Table Test for basic cases. Blank text in response indicates success
    29  	for msg, expected := range map[string]string{
    30  		"":                                    "api.command_channel_rename.message.app_error",
    31  		"o":                                   "api.command_channel_rename.too_short.app_error",
    32  		"joram":                               "",
    33  		"More than 22 chars but less than 64": "",
    34  		strings.Repeat("12345", 13):           "api.command_channel_rename.too_long.app_error",
    35  	} {
    36  		actual := rp.DoCommand(th.App, th.Context, args, msg).Text
    37  		assert.Equal(t, expected, actual)
    38  	}
    39  
    40  	// Try a public channel *without* permission.
    41  	th.removePermissionFromRole(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID)
    42  
    43  	args = &model.CommandArgs{
    44  		T:         func(s string, args ...interface{}) string { return s },
    45  		ChannelId: th.BasicChannel.Id,
    46  		UserId:    th.BasicUser.Id,
    47  	}
    48  
    49  	actual := rp.DoCommand(th.App, th.Context, args, "hello").Text
    50  	assert.Equal(t, "api.command_channel_rename.permission.app_error", actual)
    51  
    52  	// Try a private channel *with* permission.
    53  	privateChannel := th.createPrivateChannel(th.BasicTeam)
    54  
    55  	th.addPermissionToRole(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID)
    56  
    57  	args = &model.CommandArgs{
    58  		T:         func(s string, args ...interface{}) string { return s },
    59  		ChannelId: privateChannel.Id,
    60  		UserId:    th.BasicUser.Id,
    61  	}
    62  
    63  	actual = rp.DoCommand(th.App, th.Context, args, "hello").Text
    64  	assert.Equal(t, "", actual)
    65  
    66  	// Try a private channel *without* permission.
    67  	th.removePermissionFromRole(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID)
    68  
    69  	args = &model.CommandArgs{
    70  		T:         func(s string, args ...interface{}) string { return s },
    71  		ChannelId: privateChannel.Id,
    72  		UserId:    th.BasicUser.Id,
    73  	}
    74  
    75  	actual = rp.DoCommand(th.App, th.Context, args, "hello").Text
    76  	assert.Equal(t, "api.command_channel_rename.permission.app_error", actual)
    77  
    78  	// Try a group channel *with* being a member.
    79  	user1 := th.createUser()
    80  	user2 := th.createUser()
    81  
    82  	groupChannel := th.createGroupChannel(user1, user2)
    83  
    84  	args = &model.CommandArgs{
    85  		T:         func(s string, args ...interface{}) string { return s },
    86  		ChannelId: groupChannel.Id,
    87  		UserId:    th.BasicUser.Id,
    88  	}
    89  
    90  	actual = rp.DoCommand(th.App, th.Context, args, "hello").Text
    91  	assert.Equal(t, "api.command_channel_rename.direct_group.app_error", actual)
    92  
    93  	// Try a direct channel *with* being a member.
    94  	directChannel := th.createDmChannel(user1)
    95  
    96  	args = &model.CommandArgs{
    97  		T:         func(s string, args ...interface{}) string { return s },
    98  		ChannelId: directChannel.Id,
    99  		UserId:    th.BasicUser.Id,
   100  	}
   101  
   102  	actual = rp.DoCommand(th.App, th.Context, args, "hello").Text
   103  	assert.Equal(t, "api.command_channel_rename.direct_group.app_error", actual)
   104  }