diff --git a/internal/token/delivery/http/token_http.go b/internal/token/delivery/http/token_http.go index 70677cc..803e70e 100644 --- a/internal/token/delivery/http/token_http.go +++ b/internal/token/delivery/http/token_http.go @@ -92,22 +92,19 @@ func (h *RequestHandler) Revocation(ctx *http.RequestCtx) { req := new(RevocationRequest) if err := req.bind(ctx); err != nil { - ctx.SetStatusCode(http.StatusBadRequest) - encoder.Encode(err) + ctx.Error(err.Error(), http.StatusBadRequest) return } if err := h.tokener.Revoke(ctx, req.Token); err != nil { - ctx.SetStatusCode(http.StatusBadRequest) - encoder.Encode(err) + ctx.Error(err.Error(), http.StatusBadRequest) return } if err := encoder.Encode(&RevocationResponse{}); err != nil { - ctx.SetStatusCode(http.StatusInternalServerError) - encoder.Encode(err) + ctx.Error(err.Error(), http.StatusInternalServerError) } } diff --git a/internal/token/repository/bolt/bolt_token.go b/internal/token/repository/bolt/bolt_token.go index 99cccc5..b7a4db7 100644 --- a/internal/token/repository/bolt/bolt_token.go +++ b/internal/token/repository/bolt/bolt_token.go @@ -18,7 +18,7 @@ type boltTokenRepository struct { var ErrNotExist error = errors.New("token not exist") -var DefaultBucket []byte = []byte("tokens") +var DefaultBucket = []byte("tokens") //nolint: gochecknoglobals func NewBoltTokenRepository(db *bolt.DB) token.Repository { return &boltTokenRepository{ @@ -42,7 +42,12 @@ func (repo *boltTokenRepository) Create(ctx context.Context, accessToken *domain return errors.Wrap(err, "cannot create bucket") } - return bkt.Put([]byte(accessToken.AccessToken), []byte(accessToken.Expiry.Format(time.RFC3339))) + err = bkt.Put([]byte(accessToken.AccessToken), []byte(accessToken.Expiry.Format(time.RFC3339))) + if err != nil { + return errors.Wrap(err, "cannot put token into bucket") + } + + return nil }); err != nil { return errors.Wrap(err, "failed to batch token in database") } @@ -52,9 +57,12 @@ func (repo *boltTokenRepository) Create(ctx context.Context, accessToken *domain func (repo *boltTokenRepository) Get(ctx context.Context, accessToken string) (*domain.Token, error) { result := &domain.Token{ + Expiry: time.Time{}, + Scopes: []string{}, AccessToken: accessToken, TokenType: "Bearer", - Expiry: time.Time{}, + ClientID: "", + Me: "", } if err := repo.db.View(func(tx *bolt.Tx) (err error) { @@ -69,7 +77,7 @@ func (repo *boltTokenRepository) Get(ctx context.Context, accessToken string) (* } if result.Expiry, err = time.Parse(time.RFC3339, string(expiry)); err != nil { - return err + return errors.Wrap(err, "cannot parse expiry date") } return nil diff --git a/internal/token/repository/bolt/bolt_token_test.go b/internal/token/repository/bolt/bolt_token_test.go index 9c1a5c6..0fd2cce 100644 --- a/internal/token/repository/bolt/bolt_token_test.go +++ b/internal/token/repository/bolt/bolt_token_test.go @@ -5,6 +5,7 @@ import ( "testing" "time" + "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" bolt "go.etcd.io/bbolt" @@ -27,13 +28,15 @@ func TestCreate(t *testing.T) { require.NoError(t, repo.Create(context.TODO(), accessToken)) result := &domain.Token{ + Expiry: time.Time{}, + Scopes: []string{}, AccessToken: accessToken.AccessToken, TokenType: accessToken.TokenType, - Expiry: time.Time{}, + ClientID: "", + Me: "", } require.NoError(t, db.View(func(tx *bolt.Tx) (err error) { - //nolint: exhaustivestruct src := tx.Bucket(repository.DefaultBucket).Get([]byte(accessToken.AccessToken)) result.Expiry, err = time.Parse(time.RFC3339, string(src)) @@ -57,10 +60,15 @@ func TestGet(t *testing.T) { require.NoError(t, db.Update(func(tx *bolt.Tx) error { bkt, err := tx.CreateBucketIfNotExists(repository.DefaultBucket) if err != nil { - return err + return errors.Wrap(err, "cannot create bucket") } - return bkt.Put([]byte(accessToken.AccessToken), []byte(accessToken.Expiry.Format(time.RFC3339))) + err = bkt.Put([]byte(accessToken.AccessToken), []byte(accessToken.Expiry.Format(time.RFC3339))) + if err != nil { + return errors.Wrap(err, "cannot put token into bucket") + } + + return nil })) result, err := repo.Get(context.TODO(), accessToken.AccessToken) diff --git a/internal/token/repository/memory/memory_token.go b/internal/token/repository/memory/memory_token.go index cb88121..715baab 100644 --- a/internal/token/repository/memory/memory_token.go +++ b/internal/token/repository/memory/memory_token.go @@ -41,8 +41,11 @@ func (repo *memoryTokenRepository) Get(ctx context.Context, accessToken string) } return &domain.Token{ + Expiry: expiry.(time.Time), + Scopes: []string{}, AccessToken: accessToken, TokenType: "Bearer", - Expiry: expiry.(time.Time), + ClientID: "", + Me: "", }, nil }