diff --git a/server/cmd/mmctl/commands/user.go b/server/cmd/mmctl/commands/user.go index 3a3f5de89b..efc00e30be 100644 --- a/server/cmd/mmctl/commands/user.go +++ b/server/cmd/mmctl/commands/user.go @@ -693,6 +693,7 @@ func searchUserCmdF(c client.Client, cmd *cobra.Command, args []string) error { users, err := getUsersFromArgs(c, args) if err != nil { printer.PrintError(err.Error()) + return err } for i, user := range users { diff --git a/server/cmd/mmctl/commands/user_e2e_test.go b/server/cmd/mmctl/commands/user_e2e_test.go index 6d0fb28c3d..ec0fe7e8ae 100644 --- a/server/cmd/mmctl/commands/user_e2e_test.go +++ b/server/cmd/mmctl/commands/user_e2e_test.go @@ -134,7 +134,7 @@ func (s *MmctlE2ETestSuite) TestSearchUserCmd() { emailArg := "nonexistentUser@example.com" err := searchUserCmdF(c, &cobra.Command{}, []string{emailArg}) - s.Require().Nil(err) + s.Require().Error(err) s.Len(printer.GetLines(), 0) s.Len(printer.GetErrorLines(), 1) s.Equal(fmt.Sprintf("1 error occurred:\n\t* user %s not found\n\n", emailArg), printer.GetErrorLines()[0]) diff --git a/server/cmd/mmctl/commands/user_test.go b/server/cmd/mmctl/commands/user_test.go index 37e789b970..2ac0337d06 100644 --- a/server/cmd/mmctl/commands/user_test.go +++ b/server/cmd/mmctl/commands/user_test.go @@ -615,7 +615,7 @@ func (s *MmctlUnitTestSuite) TestSearchUserCmd() { Times(1) err := searchUserCmdF(s.client, &cobra.Command{}, []string{arg}) - s.Require().Nil(err) + s.Require().NotNil(err) s.Require().Len(printer.GetLines(), 0) s.Require().Equal("1 error occurred:\n\t* user example@example.com not found\n\n", printer.GetErrorLines()[0]) }) @@ -625,9 +625,78 @@ func (s *MmctlUnitTestSuite) TestSearchUserCmd() { arg := "test/../hello?@mattermost.com" err := searchUserCmdF(s.client, &cobra.Command{}, []string{arg}) - s.Require().Nil(err) + s.Require().NotNil(err) s.Require().Equal("1 error occurred:\n\t* user test/../hello?@mattermost.com not found\n\n", printer.GetErrorLines()[0]) }) + + s.Run("Error while getting user by email", func() { + printer.Clean() + emailArg := "example@mailexample.com" + + s.client. + EXPECT(). + GetUserByEmail(context.Background(), emailArg, ""). + Return(nil, &model.Response{}, errors.New("Error while getting user by email")). + Times(1) + + err := searchUserCmdF(s.client, &cobra.Command{}, []string{emailArg}) + s.Require().NotNil(err) + s.Require().Len(printer.GetLines(), 0) + s.Require().Equal("1 error occurred:\n\t* Error while getting user by email\n\n", err.Error()) + s.Require().Equal("1 error occurred:\n\t* Error while getting user by email\n\n", printer.GetErrorLines()[0]) + }) + + s.Run("Error while getting user by username", func() { + printer.Clean() + usernameArg := "exampleUser" + + s.client. + EXPECT(). + GetUserByEmail(context.Background(), usernameArg, ""). + Return(nil, &model.Response{}, nil). + Times(1) + + s.client. + EXPECT(). + GetUserByUsername(context.Background(), usernameArg, ""). + Return(nil, &model.Response{}, errors.New("Error while getting user by username")). + Times(1) + + err := searchUserCmdF(s.client, &cobra.Command{}, []string{usernameArg}) + s.Require().NotNil(err) + s.Require().Len(printer.GetLines(), 0) + s.Require().Equal("1 error occurred:\n\t* Error while getting user by username\n\n", err.Error()) + s.Require().Equal("1 error occurred:\n\t* Error while getting user by username\n\n", printer.GetErrorLines()[0]) + }) + + s.Run("Error while getting user", func() { + printer.Clean() + userArg := "exampleUser" + + s.client. + EXPECT(). + GetUserByEmail(context.Background(), userArg, ""). + Return(nil, &model.Response{}, nil). + Times(1) + + s.client. + EXPECT(). + GetUserByUsername(context.Background(), userArg, ""). + Return(nil, &model.Response{}, nil). + Times(1) + + s.client. + EXPECT(). + GetUser(context.Background(), userArg, ""). + Return(nil, &model.Response{}, errors.New("Error while getting user")). + Times(1) + + err := searchUserCmdF(s.client, &cobra.Command{}, []string{userArg}) + s.Require().NotNil(err) + s.Require().Len(printer.GetLines(), 0) + s.Require().Equal("1 error occurred:\n\t* Error while getting user\n\n", err.Error()) + s.Require().Equal("1 error occurred:\n\t* Error while getting user\n\n", printer.GetErrorLines()[0]) + }) } func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() {