github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/app/command_msg_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package app 5 6 import ( 7 "testing" 8 9 "github.com/mattermost/go-i18n/i18n" 10 "github.com/stretchr/testify/assert" 11 12 "github.com/mattermost/mattermost-server/v5/model" 13 ) 14 15 func TestMsgProvider(t *testing.T) { 16 th := Setup(t).InitBasic() 17 defer th.TearDown() 18 19 team := th.CreateTeam() 20 th.LinkUserToTeam(th.BasicUser, team) 21 cmd := &msgProvider{} 22 23 th.RemovePermissionFromRole(model.PERMISSION_CREATE_DIRECT_CHANNEL.Id, model.SYSTEM_USER_ROLE_ID) 24 25 // Check without permission to create a DM channel. 26 resp := cmd.DoCommand(th.App, &model.CommandArgs{ 27 T: i18n.IdentityTfunc(), 28 SiteURL: "http://test.url", 29 TeamId: team.Id, 30 UserId: th.BasicUser.Id, 31 }, "@"+th.BasicUser2.Username+" hello") 32 33 channelName := model.GetDMNameFromIds(th.BasicUser.Id, th.BasicUser2.Id) 34 assert.Equal(t, "api.command_msg.permission.app_error", resp.Text) 35 assert.Equal(t, "", resp.GotoLocation) 36 37 th.AddPermissionToRole(model.PERMISSION_CREATE_DIRECT_CHANNEL.Id, model.SYSTEM_USER_ROLE_ID) 38 39 // Check with permission to create a DM channel. 40 resp = cmd.DoCommand(th.App, &model.CommandArgs{ 41 T: i18n.IdentityTfunc(), 42 SiteURL: "http://test.url", 43 TeamId: team.Id, 44 UserId: th.BasicUser.Id, 45 }, "@"+th.BasicUser2.Username+" hello") 46 47 assert.Equal(t, "", resp.Text) 48 assert.Equal(t, "http://test.url/"+team.Name+"/channels/"+channelName, resp.GotoLocation) 49 50 // Check without permission to post to an existing DM channel. 51 resp = cmd.DoCommand(th.App, &model.CommandArgs{ 52 T: i18n.IdentityTfunc(), 53 SiteURL: "http://test.url", 54 TeamId: team.Id, 55 UserId: th.BasicUser.Id, 56 }, "@"+th.BasicUser2.Username+" hello") 57 58 assert.Equal(t, "", resp.Text) 59 assert.Equal(t, "http://test.url/"+team.Name+"/channels/"+channelName, resp.GotoLocation) 60 61 // Check that a guest user cannot message a user who is not in a channel/team with him 62 guest := th.CreateGuest() 63 user := th.CreateUser() 64 65 th.LinkUserToTeam(user, team) 66 th.LinkUserToTeam(guest, th.BasicTeam) 67 th.AddUserToChannel(guest, th.BasicChannel) 68 69 resp = cmd.DoCommand(th.App, &model.CommandArgs{ 70 T: i18n.IdentityTfunc(), 71 SiteURL: "http://test.url", 72 TeamId: th.BasicTeam.Id, 73 UserId: guest.Id, 74 }, "@"+user.Username+" hello") 75 76 assert.Equal(t, "api.command_msg.missing.app_error", resp.Text) 77 assert.Equal(t, "", resp.GotoLocation) 78 79 // Check that a guest user can message a user who is in a channel/team with him 80 th.LinkUserToTeam(user, th.BasicTeam) 81 th.AddUserToChannel(user, th.BasicChannel) 82 83 resp = cmd.DoCommand(th.App, &model.CommandArgs{ 84 T: i18n.IdentityTfunc(), 85 SiteURL: "http://test.url", 86 TeamId: th.BasicTeam.Id, 87 UserId: guest.Id, 88 }, "@"+user.Username+" hello") 89 90 channelName = model.GetDMNameFromIds(guest.Id, user.Id) 91 92 assert.Equal(t, "", resp.Text) 93 assert.Equal(t, "http://test.url/"+th.BasicTeam.Name+"/channels/"+channelName, resp.GotoLocation) 94 }