github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/app/command_channel_purpose_test.go (about) 1 // Copyright (c) 2015-present Xenia, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package app 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 11 "github.com/xzl8028/xenia-server/model" 12 ) 13 14 func TestPurposeProviderDoCommand(t *testing.T) { 15 th := Setup(t).InitBasic() 16 defer th.TearDown() 17 18 pp := PurposeProvider{} 19 20 // Try a public channel *with* permission. 21 th.AddPermissionToRole(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID) 22 23 args := &model.CommandArgs{ 24 T: func(s string, args ...interface{}) string { return s }, 25 ChannelId: th.BasicChannel.Id, 26 Session: model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: model.TEAM_USER_ROLE_ID}}}, 27 } 28 29 for msg, expected := range map[string]string{ 30 "": "api.command_channel_purpose.message.app_error", 31 "hello": "", 32 } { 33 actual := pp.DoCommand(th.App, args, msg).Text 34 assert.Equal(t, expected, actual) 35 } 36 37 // Try a public channel *without* permission. 38 th.RemovePermissionFromRole(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID) 39 40 args = &model.CommandArgs{ 41 T: func(s string, args ...interface{}) string { return s }, 42 ChannelId: th.BasicChannel.Id, 43 Session: model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: model.TEAM_USER_ROLE_ID}}}, 44 } 45 46 actual := pp.DoCommand(th.App, args, "hello").Text 47 assert.Equal(t, "api.command_channel_purpose.permission.app_error", actual) 48 49 // Try a private channel *with* permission. 50 privateChannel := th.CreatePrivateChannel(th.BasicTeam) 51 52 th.AddPermissionToRole(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID) 53 54 args = &model.CommandArgs{ 55 T: func(s string, args ...interface{}) string { return s }, 56 ChannelId: privateChannel.Id, 57 Session: model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: model.TEAM_USER_ROLE_ID}}}, 58 } 59 60 actual = pp.DoCommand(th.App, args, "hello").Text 61 assert.Equal(t, "", actual) 62 63 // Try a private channel *without* permission. 64 th.RemovePermissionFromRole(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id, model.CHANNEL_USER_ROLE_ID) 65 66 args = &model.CommandArgs{ 67 T: func(s string, args ...interface{}) string { return s }, 68 ChannelId: privateChannel.Id, 69 Session: model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: model.TEAM_USER_ROLE_ID}}}, 70 } 71 72 actual = pp.DoCommand(th.App, args, "hello").Text 73 assert.Equal(t, "api.command_channel_purpose.permission.app_error", actual) 74 75 // Try a group channel *with* being a member. 76 user1 := th.CreateUser() 77 user2 := th.CreateUser() 78 79 groupChannel := th.CreateGroupChannel(user1, user2) 80 81 args = &model.CommandArgs{ 82 T: func(s string, args ...interface{}) string { return s }, 83 ChannelId: groupChannel.Id, 84 Session: model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: model.TEAM_USER_ROLE_ID}}}, 85 } 86 87 actual = pp.DoCommand(th.App, args, "hello").Text 88 assert.Equal(t, "api.command_channel_purpose.direct_group.app_error", actual) 89 90 // Try a direct channel *with* being a member. 91 directChannel := th.CreateDmChannel(user1) 92 93 args = &model.CommandArgs{ 94 T: func(s string, args ...interface{}) string { return s }, 95 ChannelId: directChannel.Id, 96 Session: model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: model.TEAM_USER_ROLE_ID}}}, 97 } 98 99 actual = pp.DoCommand(th.App, args, "hello").Text 100 assert.Equal(t, "api.command_channel_purpose.direct_group.app_error", actual) 101 }