github.com/lologarithm/mattermost-server@v5.3.2-0.20181002060438-c82a84ed765b+incompatible/app/command_remove_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/stretchr/testify/assert"
    10  
    11  	"github.com/mattermost/mattermost-server/model"
    12  )
    13  
    14  func TestRemoveProviderDoCommand(t *testing.T) {
    15  	th := Setup().InitBasic()
    16  	defer th.TearDown()
    17  
    18  	rp := RemoveProvider{}
    19  
    20  	publicChannel, _ := th.App.CreateChannel(&model.Channel{
    21  		DisplayName: "AA",
    22  		Name:        "aa" + model.NewId() + "a",
    23  		Type:        model.CHANNEL_OPEN,
    24  		TeamId:      th.BasicTeam.Id,
    25  		CreatorId:   th.BasicUser.Id,
    26  	}, false)
    27  
    28  	privateChannel, _ := th.App.CreateChannel(&model.Channel{
    29  		DisplayName: "BB",
    30  		Name:        "aa" + model.NewId() + "a",
    31  		Type:        model.CHANNEL_OPEN,
    32  		TeamId:      th.BasicTeam.Id,
    33  		CreatorId:   th.BasicUser.Id,
    34  	}, false)
    35  
    36  	targetUser := th.CreateUser()
    37  	th.App.AddUserToTeam(th.BasicTeam.Id, targetUser.Id, targetUser.Id)
    38  	th.App.AddUserToChannel(targetUser, publicChannel)
    39  	th.App.AddUserToChannel(targetUser, privateChannel)
    40  
    41  	// Try a public channel *without* permission.
    42  	args := &model.CommandArgs{
    43  		T:         func(s string, args ...interface{}) string { return s },
    44  		ChannelId: publicChannel.Id,
    45  		Session:   model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: ""}}},
    46  	}
    47  
    48  	actual := rp.DoCommand(th.App, args, targetUser.Username).Text
    49  	assert.Equal(t, "api.command_remove.permission.app_error", actual)
    50  
    51  	// Try a public channel *with* permission.
    52  	th.App.AddUserToChannel(th.BasicUser, publicChannel)
    53  	args = &model.CommandArgs{
    54  		T:         func(s string, args ...interface{}) string { return s },
    55  		ChannelId: publicChannel.Id,
    56  		Session:   model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: ""}}},
    57  	}
    58  
    59  	actual = rp.DoCommand(th.App, args, targetUser.Username).Text
    60  	assert.Equal(t, "", actual)
    61  
    62  	// Try a private channel *without* permission.
    63  	args = &model.CommandArgs{
    64  		T:         func(s string, args ...interface{}) string { return s },
    65  		ChannelId: privateChannel.Id,
    66  		Session:   model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: ""}}},
    67  	}
    68  
    69  	actual = rp.DoCommand(th.App, args, targetUser.Username).Text
    70  	assert.Equal(t, "api.command_remove.permission.app_error", actual)
    71  
    72  	// Try a private channel *with* permission.
    73  	th.App.AddUserToChannel(th.BasicUser, privateChannel)
    74  	args = &model.CommandArgs{
    75  		T:         func(s string, args ...interface{}) string { return s },
    76  		ChannelId: privateChannel.Id,
    77  		Session:   model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: ""}}},
    78  	}
    79  
    80  	actual = rp.DoCommand(th.App, args, targetUser.Username).Text
    81  	assert.Equal(t, "", actual)
    82  
    83  	// Try a group channel
    84  	user1 := th.CreateUser()
    85  	user2 := th.CreateUser()
    86  
    87  	groupChannel := th.CreateGroupChannel(user1, user2)
    88  
    89  	args = &model.CommandArgs{
    90  		T:         func(s string, args ...interface{}) string { return s },
    91  		ChannelId: groupChannel.Id,
    92  		Session:   model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: ""}}},
    93  	}
    94  
    95  	actual = rp.DoCommand(th.App, args, user1.Username).Text
    96  	assert.Equal(t, "api.command_remove.direct_group.app_error", actual)
    97  
    98  	// Try a direct channel *with* being a member.
    99  	directChannel := th.CreateDmChannel(user1)
   100  
   101  	args = &model.CommandArgs{
   102  		T:         func(s string, args ...interface{}) string { return s },
   103  		ChannelId: directChannel.Id,
   104  		Session:   model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: ""}}},
   105  	}
   106  
   107  	actual = rp.DoCommand(th.App, args, user1.Username).Text
   108  	assert.Equal(t, "api.command_remove.direct_group.app_error", actual)
   109  
   110  	// Try a public channel with a deactivated user.
   111  	deactivatedUser := th.CreateUser()
   112  	th.App.AddUserToTeam(th.BasicTeam.Id, deactivatedUser.Id, deactivatedUser.Id)
   113  	th.App.AddUserToChannel(deactivatedUser, publicChannel)
   114  	th.App.UpdateActive(deactivatedUser, false)
   115  
   116  	args = &model.CommandArgs{
   117  		T:         func(s string, args ...interface{}) string { return s },
   118  		ChannelId: publicChannel.Id,
   119  		Session:   model.Session{UserId: th.BasicUser.Id, TeamMembers: []*model.TeamMember{{TeamId: th.BasicTeam.Id, Roles: ""}}},
   120  	}
   121  
   122  	actual = rp.DoCommand(th.App, args, deactivatedUser.Username).Text
   123  	assert.Equal(t, "api.command_remove.missing.app_error", actual)
   124  }