[MM-21466] delete users cmd return err (#31191)
* refactored error managment for deleteUsersCmdF * updated tests related to deleteUsersCmdF * updated user_e2e_test to reflect changes made to the deleteUsersCmdF function * Empty-Commit to retrigger workflow * applied gofmt formating reqs to user_test.go * added suggested changes to the deleteUsersCmdF regarding error gathering * added requested changes regarding error aggragation on deleteUsersCmdF * style(mmctl): removing trailing whitespace * feat(mmctl): returning errors in deleteUserCmdF on err * fix(mmctl): returns when err parsing args * test(mmctl): updated tests to expect err instead of reading printer * style: updating returned errs * tests: updated test to reflect error change * tests(mmctl): updated e2e DeleteUserCmd test * Update server/cmd/mmctl/commands/user.go Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com> * refactor: changing error to return username instead of email * refactor: changing email to username for errors --------- Co-authored-by: Arnaud Wanet <andrewwanet9@gmail.com> Co-authored-by: Antonis Stamatiou <stamatiou.antonis@gmail.com> Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
Этот коммит содержится в:
@@ -405,6 +405,9 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() {
|
||||
printer.Clean()
|
||||
arg := "userdoesnotexist@example.com"
|
||||
|
||||
var expectedErr *multierror.Error
|
||||
expectedErr = multierror.Append(expectedErr, fmt.Errorf("user %s not found", arg))
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUserByEmail(context.TODO(), arg, "").
|
||||
@@ -426,9 +429,8 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() {
|
||||
cmd := &cobra.Command{}
|
||||
cmd.Flags().Bool("confirm", true, "")
|
||||
err := deleteUsersCmdF(s.client, cmd, []string{arg})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 0)
|
||||
s.Require().Equal(fmt.Sprintf("1 error occurred:\n\t* user %s not found\n\n", arg), printer.GetErrorLines()[0])
|
||||
s.Require().Error(err)
|
||||
s.Require().EqualError(err, expectedErr.Error())
|
||||
})
|
||||
|
||||
s.Run("Delete users should delete users", func() {
|
||||
@@ -470,6 +472,9 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() {
|
||||
|
||||
mockError := errors.New("an error occurred on deleting a user")
|
||||
|
||||
var expectedErr *multierror.Error
|
||||
expectedErr = multierror.Append(expectedErr, fmt.Errorf("unable to delete user %s error: %w", mockUser1.Username, mockError))
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUserByEmail(context.TODO(), email1, "").
|
||||
@@ -486,10 +491,8 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() {
|
||||
cmd.Flags().Bool("confirm", true, "")
|
||||
|
||||
err := deleteUsersCmdF(s.client, cmd, []string{email1})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetErrorLines(), 1)
|
||||
s.Require().Equal("Unable to delete user 'User1' error: an error occurred on deleting a user",
|
||||
printer.GetErrorLines()[0])
|
||||
s.Require().EqualError(err, expectedErr.Error())
|
||||
s.Require().Len(printer.GetErrorLines(), 0)
|
||||
})
|
||||
|
||||
s.Run("Delete two users, first fails with error other passes", func() {
|
||||
@@ -497,6 +500,9 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() {
|
||||
|
||||
mockError := errors.New("an error occurred on deleting a user")
|
||||
|
||||
var expectedErr *multierror.Error
|
||||
expectedErr = multierror.Append(expectedErr, fmt.Errorf("unable to delete user %s error: %w", mockUser1.Username, mockError))
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUserByEmail(context.TODO(), email1, "").
|
||||
@@ -523,17 +529,18 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() {
|
||||
cmd.Flags().Bool("confirm", true, "")
|
||||
|
||||
err := deleteUsersCmdF(s.client, cmd, []string{email1, email2})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 1)
|
||||
s.Require().Len(printer.GetErrorLines(), 1)
|
||||
s.Require().NotNil(err)
|
||||
s.Require().EqualError(err, expectedErr.Error())
|
||||
s.Require().Equal(&mockUser2, printer.GetLines()[0])
|
||||
s.Require().Equal("Unable to delete user 'User1' error: an error occurred on deleting a user",
|
||||
printer.GetErrorLines()[0])
|
||||
})
|
||||
|
||||
s.Run("partial delete of user, i.e failing to delete profile image gives a warning on the console.", func() {
|
||||
printer.Clean()
|
||||
|
||||
var expectedErr *multierror.Error
|
||||
expectedErr = multierror.Append(expectedErr,
|
||||
fmt.Errorf("unable to delete the profile image of the user, please delete it manually, id:%s", mockUser1.Username))
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUserByEmail(context.TODO(), email1, "").
|
||||
@@ -549,10 +556,8 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() {
|
||||
cmd.Flags().Bool("confirm", true, "")
|
||||
|
||||
err := deleteUsersCmdF(s.client, cmd, []string{email1})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 1)
|
||||
s.Require().Len(printer.GetErrorLines(), 1)
|
||||
s.Require().Equal(fmt.Sprintf("There were issues with deleting profile image of the user. Please delete it manually. Id: %s", mockUser1.Id), printer.GetErrorLines()[0])
|
||||
s.Require().NotNil(err)
|
||||
s.Require().EqualError(err, expectedErr.Error())
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user