Handle context cancellations and avoid logged errors.

This commit is contained in:
mikestefanello 2022-01-09 00:23:26 -05:00
parent a6e99058f4
commit 10c0a23c0a
8 changed files with 83 additions and 35 deletions

View file

@ -1,5 +1,10 @@
package context
import (
"context"
"errors"
)
const (
// AuthenticatedUserKey is the key value used to store the authenticated user in context
AuthenticatedUserKey = "auth_user"
@ -13,3 +18,8 @@ const (
// PasswordTokenKey is the key value used to store a password token in context
PasswordTokenKey = "password_token"
)
// IsCanceledError determines if an error is due to a context cancelation
func IsCanceledError(err error) bool {
return errors.Is(err, context.Canceled)
}

24
context/context_test.go Normal file
View file

@ -0,0 +1,24 @@
package context
import (
"context"
"errors"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestIsCanceled(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
assert.False(t, IsCanceledError(ctx.Err()))
cancel()
assert.True(t, IsCanceledError(ctx.Err()))
ctx, cancel = context.WithTimeout(context.Background(), time.Microsecond)
time.Sleep(time.Microsecond * 2)
cancel()
assert.False(t, IsCanceledError(ctx.Err()))
assert.False(t, IsCanceledError(errors.New("test error")))
}