Skip to content

Commit

Permalink
Give descriptive error if auth method not found (#10163)
Browse files Browse the repository at this point in the history
* Give descriptive error if auth method not found

Previously during a `consul login -method=blah`, if the auth method was not found, the
error returned would be "ACL not found". This is potentially confusing
because there may be many different ACLs involved in a login: the ACL of
the Consul client, perhaps the binding rule or the auth method.

Now the error will be "auth method blah not found", which is much easier
to debug.
  • Loading branch information
lkysow authored May 3, 2021
1 parent 2ca3f48 commit 8d6cbe7
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 3 deletions.
3 changes: 3 additions & 0 deletions .changelog/10163.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:improvement
acl: Give more descriptive error if auth method not found.
```
2 changes: 1 addition & 1 deletion agent/consul/acl_endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -2380,7 +2380,7 @@ func (a *ACL) Login(args *structs.ACLLoginRequest, reply *structs.ACLToken) erro
if err != nil {
return err
} else if method == nil {
return acl.ErrNotFound
return fmt.Errorf("%w: auth method %q not found", acl.ErrNotFound, auth.AuthMethod)
}

if err := a.enterpriseAuthMethodTypeValidation(method.Type); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion agent/consul/acl_endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4628,7 +4628,7 @@ func TestACLEndpoint_Login(t *testing.T) {
}
resp := structs.ACLToken{}

testutil.RequireErrorContains(t, acl.Login(&req, &resp), "ACL not found")
testutil.RequireErrorContains(t, acl.Login(&req, &resp), fmt.Sprintf("auth method %q not found", method.Name+"-notexist"))
})

t.Run("invalid method token", func(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion command/login/login_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ func TestLoginCommand(t *testing.T) {

code := cmd.Run(args)
require.Equal(t, code, 1, "err: %s", ui.ErrorWriter.String())
require.Contains(t, ui.ErrorWriter.String(), "403 (ACL not found)")
require.Contains(t, ui.ErrorWriter.String(), "403 (ACL not found: auth method \"test\" not found")
})

testSessionID := testauth.StartSession()
Expand Down

0 comments on commit 8d6cbe7

Please sign in to comment.