minor errs cleanup (#3234)

some code cleanup that happened while investigating a bug repro

---

#### Does this PR need a docs update or release note?

- [x]  No

#### Type of change

- [x] 🧹 Tech Debt/Cleanup

#### Test Plan

- [x]  Unit test
- [x] 💚 E2E
This commit is contained in:
Keepers 2023-04-27 10:57:38 -06:00 committed by GitHub
parent b8e868c05b
commit 1cd592d216
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 10 deletions

View File

@ -93,7 +93,7 @@ func User(
u, err := gwi.GetByID(ctx, userID)
if err != nil {
if graph.IsErrUserNotFound(err) {
return nil, nil, clues.Stack(graph.ErrResourceOwnerNotFound).With("user_id", userID)
return nil, nil, clues.Stack(graph.ErrResourceOwnerNotFound, err).With("user_id", userID)
}
return nil, nil, clues.Wrap(err, "getting user")

View File

@ -37,13 +37,13 @@ func Internal(enum errEnum) []error {
// Is checks if the provided error contains an internal error that matches
// the public error category.
func Is(err error, enum errEnum) bool {
esl, ok := internalToExternal[enum]
internalErrs, ok := internalToExternal[enum]
if !ok {
return false
}
for _, e := range esl {
if errors.Is(err, e) {
for _, target := range internalErrs {
if errors.Is(err, target) {
return true
}
}

View File

@ -3,6 +3,7 @@ package errs
import (
"testing"
"github.com/alcionai/clues"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
@ -38,8 +39,8 @@ func (suite *ErrUnitSuite) TestInternal() {
func (suite *ErrUnitSuite) TestIs() {
table := []struct {
is errEnum
input error
target errEnum
err error
}{
{RepoAlreadyExists, repository.ErrorRepoAlreadyExists},
{BackupNotFound, repository.ErrorBackupNotFound},
@ -47,9 +48,24 @@ func (suite *ErrUnitSuite) TestIs() {
{ResourceOwnerNotFound, graph.ErrResourceOwnerNotFound},
}
for _, test := range table {
suite.Run(string(test.is), func() {
assert.True(suite.T(), Is(test.input, test.is))
assert.False(suite.T(), Is(assert.AnError, test.is))
suite.Run(string(test.target), func() {
var (
w = clues.Wrap(test.err, "wrap")
s = clues.Stack(test.err)
es = clues.Stack(assert.AnError, test.err)
se = clues.Stack(test.err, assert.AnError)
sw = clues.Stack(assert.AnError, w)
ws = clues.Stack(w, assert.AnError)
)
assert.True(suite.T(), Is(test.err, test.target))
assert.True(suite.T(), Is(w, test.target))
assert.True(suite.T(), Is(s, test.target))
assert.True(suite.T(), Is(es, test.target))
assert.True(suite.T(), Is(se, test.target))
assert.True(suite.T(), Is(sw, test.target))
assert.True(suite.T(), Is(ws, test.target))
assert.False(suite.T(), Is(assert.AnError, test.target))
})
}
}

View File

@ -263,7 +263,7 @@ func (c Users) GetInfo(ctx context.Context, userID string) (*UserInfo, error) {
if _, err := c.GetMailFolders(ctx, userID, options); err != nil {
if graph.IsErrUserNotFound(err) {
logger.CtxErr(ctx, err).Error("user not found")
return nil, err
return nil, graph.Stack(ctx, clues.Stack(graph.ErrResourceOwnerNotFound, err))
}
if !graph.IsErrExchangeMailFolderNotFound(err) ||