Skip to content
This repository has been archived by the owner on Jul 5, 2024. It is now read-only.

Refactored resetUserMfaCmdF to return multierror #598

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions commands/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -616,18 +616,19 @@ func resetUserMfaCmdF(c client.Client, cmd *cobra.Command, args []string) error
return errors.New("expected at least one argument. See help text for details")
}

var result *multierror.Error
users, err := getUsersFromArgs(c, args)
if err != nil {
printer.PrintError(err.Error())
result = multierror.Append(result, err)
}

for _, user := range users {
if _, err := c.UpdateUserMfa(user.Id, "", false); err != nil {
printer.PrintError("Unable to reset user '" + user.Id + "' MFA. Error: " + err.Error())
result = multierror.Append(result, fmt.Errorf("unable to reset user %q MFA. Error: %w", user.Id, err))
}
}

return nil
return result.ErrorOrNil()
}

func deleteUsersCmdF(c client.Client, cmd *cobra.Command, args []string) error {
Expand Down
11 changes: 8 additions & 3 deletions commands/user_e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,10 +331,15 @@ func (s *MmctlE2ETestSuite) TestResetUserMfaCmd() {
}()

err := resetUserMfaCmdF(s.th.Client, &cobra.Command{}, []string{user.Email})
s.Require().Nil(err)

var expected error

expected = multierror.Append(
expected, fmt.Errorf(`unable to reset user %q MFA. Error: : You do not have the appropriate permissions., `, user.Id),
)

s.Require().EqualError(err, expected.Error())
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 1)
s.Require().Equal(printer.GetErrorLines()[0], fmt.Sprintf(`Unable to reset user '%s' MFA. Error: : You do not have the appropriate permissions., `, user.Id))
})
}

Expand Down
43 changes: 33 additions & 10 deletions commands/user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1627,10 +1627,18 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() {
Times(1)

err := resetUserMfaCmdF(s.client, &cobra.Command{}, []string{"userId"})
s.Require().Nil(err)

var expected error

expected = multierror.Append(
expected, ExtractErrorFromResponse(
&model.Response{StatusCode: http.StatusNotFound},
ErrEntityNotFound{Type: "user", ID: "userId"},
),
)

s.Require().EqualError(err, expected.Error())
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 1)
s.Require().Equal(printer.GetErrorLines()[0], "1 error occurred:\n\t* user userId not found\n\n")
})

s.Run("One user, unable to reset", func() {
Expand All @@ -1650,10 +1658,15 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() {
Times(1)

err := resetUserMfaCmdF(s.client, &cobra.Command{}, []string{"userId"})
s.Require().Nil(err)

var expected error

expected = multierror.Append(
expected, fmt.Errorf("unable to reset user \"userId\" MFA. Error: "+mockError.Error()),
)

s.Require().EqualError(err, expected.Error())
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 1)
s.Require().Equal(printer.GetErrorLines()[0], "Unable to reset user 'userId' MFA. Error: "+mockError.Error())
})

s.Run("Several users, with unknown users and users unable to be reset", func() {
Expand Down Expand Up @@ -1706,11 +1719,21 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() {
}

err := resetUserMfaCmdF(s.client, &cobra.Command{}, users)
s.Require().Nil(err)

var expected *multierror.Error

expected = multierror.Append(
expected, ExtractErrorFromResponse(
&model.Response{StatusCode: http.StatusNotFound},
ErrEntityNotFound{Type: "user", ID: users[3]},
),
)
expected = multierror.Append(
expected, fmt.Errorf("unable to reset user \""+users[1]+"\" MFA. Error: "+mockError.Error()),
)

s.Require().EqualError(err, expected.ErrorOrNil().Error())
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 2)
s.Require().Equal(fmt.Sprintf("1 error occurred:\n\t* user %s not found\n\n", users[3]), printer.GetErrorLines()[0])
s.Require().Equal("Unable to reset user '"+users[1]+"' MFA. Error: "+mockError.Error(), printer.GetErrorLines()[1])
})
}

Expand Down