From 3cb3d874b8a7bfbbe6b8ca34b036b76a57f80ab9 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Wed, 27 Nov 2019 12:36:51 -0800 Subject: [PATCH] MM-19980 Allowing user delete command to delete bot accounts. (#13155) Automatic Merge --- cmd/mattermost/commands/user.go | 10 ++++++++-- cmd/mattermost/commands/user_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/cmd/mattermost/commands/user.go b/cmd/mattermost/commands/user.go index b044808ab7..61f1e81178 100644 --- a/cmd/mattermost/commands/user.go +++ b/cmd/mattermost/commands/user.go @@ -724,8 +724,14 @@ func deleteUserCmdF(command *cobra.Command, args []string) error { return errors.New("Unable to find user '" + args[i] + "'") } - if err := a.PermanentDeleteUser(user); err != nil { - return err + if user.IsBot { + if err := a.PermanentDeleteBot(user.Id); err != nil { + return err + } + } else { + if err := a.PermanentDeleteUser(user); err != nil { + return err + } } } diff --git a/cmd/mattermost/commands/user_test.go b/cmd/mattermost/commands/user_test.go index e7a5de50af..3067e8084e 100644 --- a/cmd/mattermost/commands/user_test.go +++ b/cmd/mattermost/commands/user_test.go @@ -109,6 +109,33 @@ func TestChangeUserEmail(t *testing.T) { } +func TestDeleteUserBotUser(t *testing.T) { + th := Setup().InitBasic() + defer th.TearDown() + + th.CheckCommand(t, "user", "delete", th.BasicUser.Username, "--confirm") + _, err := th.App.Srv.Store.User().Get(th.BasicUser.Id) + require.Error(t, err) + + // Make a bot + bot := &model.Bot{ + Username: "bottodelete", + Description: "Delete me!", + OwnerId: model.NewId(), + } + user, err := th.App.Srv.Store.User().Save(model.UserFromBot(bot)) + require.Nil(t, err) + bot.UserId = user.Id + bot, err = th.App.Srv.Store.Bot().Save(bot) + require.Nil(t, err) + + th.CheckCommand(t, "user", "delete", bot.Username, "--confirm") + _, err = th.App.Srv.Store.User().Get(user.Id) + require.Error(t, err) + _, err = th.App.Srv.Store.Bot().Get(user.Id, true) + require.Error(t, err) +} + func TestConvertUser(t *testing.T) { th := Setup().InitBasic() defer th.TearDown()