diff --git a/kong/error.go b/kong/error.go index 4b1d1f455..b51851ca8 100644 --- a/kong/error.go +++ b/kong/error.go @@ -37,3 +37,13 @@ func IsNotFoundErr(e error) bool { } return false } + +// IsForbiddenErr returns true if the error or its cause is +// a 403 response from Kong. +func IsForbiddenErr(e error) bool { + var apiErr *APIError + if errors.As(e, &apiErr) { + return apiErr.httpCode == http.StatusForbidden + } + return false +} diff --git a/kong/error_test.go b/kong/error_test.go index ee071924f..7a11d7ff5 100644 --- a/kong/error_test.go +++ b/kong/error_test.go @@ -49,3 +49,16 @@ func TestAPIError_Code(T *testing.T) { require.True(ok) assert.True(kongErr.Code() == 404) } + +func TestIsForbiddenErrE2E(T *testing.T) { + assert := assert.New(T) + + client, err := NewTestClient(nil, nil) + assert.NoError(err) + assert.NotNil(client) + + cgs, err := client.ConsumerGroups.ListAll(defaultCtx) + assert.Nil(cgs) + assert.NotNil(err) + assert.True(IsForbiddenErr(err)) +}