From 36e14de88251ed94596809617b2a22f9c52df11e Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Wed, 17 Jan 2024 13:02:12 +0100 Subject: [PATCH] Improve Wire persistence errors --- acme/db/nosql/wire.go | 24 +++++++++++++----------- acme/db/nosql/wire_test.go | 8 ++++---- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/acme/db/nosql/wire.go b/acme/db/nosql/wire.go index 1fa072cf..03b93505 100644 --- a/acme/db/nosql/wire.go +++ b/acme/db/nosql/wire.go @@ -6,7 +6,6 @@ import ( "fmt" "time" - "github.com/pkg/errors" "github.com/smallstep/certificates/acme" "github.com/smallstep/nosql" ) @@ -20,15 +19,16 @@ type dbDpopToken struct { // getDBDpopToken retrieves and unmarshals an DPoP type from the database. func (db *DB) getDBDpopToken(_ context.Context, orderID string) (*dbDpopToken, error) { b, err := db.db.Get(wireDpopTokenTable, []byte(orderID)) - if nosql.IsErrNotFound(err) { - return nil, acme.NewError(acme.ErrorMalformedType, "dpop token %q not found", orderID) - } else if err != nil { - return nil, errors.Wrapf(err, "error loading dpop %q", orderID) + if err != nil { + if nosql.IsErrNotFound(err) { + return nil, acme.NewError(acme.ErrorMalformedType, "dpop token %q not found", orderID) + } + return nil, fmt.Errorf("failed loading dpop token %q: %w", orderID, err) } d := new(dbDpopToken) if err := json.Unmarshal(b, d); err != nil { - return nil, errors.Wrapf(err, "error unmarshaling dpop %q into dbDpopToken", orderID) + return nil, fmt.Errorf("failed unmarshaling dpop token %q into dbDpopToken: %w", orderID, err) } return d, nil } @@ -74,14 +74,16 @@ type dbOidcToken struct { // getDBOidcToken retrieves and unmarshals an OIDC id token type from the database. func (db *DB) getDBOidcToken(_ context.Context, orderID string) (*dbOidcToken, error) { b, err := db.db.Get(wireOidcTokenTable, []byte(orderID)) - if nosql.IsErrNotFound(err) { - return nil, acme.NewError(acme.ErrorMalformedType, "oidc token %q not found", orderID) - } else if err != nil { - return nil, errors.Wrapf(err, "error loading oidc token %q", orderID) + if err != nil { + if nosql.IsErrNotFound(err) { + return nil, acme.NewError(acme.ErrorMalformedType, "oidc token %q not found", orderID) + } + return nil, fmt.Errorf("failed loading oidc token %q: %w", orderID, err) } + o := new(dbOidcToken) if err := json.Unmarshal(b, o); err != nil { - return nil, errors.Wrapf(err, "error unmarshaling oidc token %q into dbOidcToken", orderID) + return nil, fmt.Errorf("failed unmarshaling oidc token %q into dbOidcToken: %w", orderID, err) } return o, nil } diff --git a/acme/db/nosql/wire_test.go b/acme/db/nosql/wire_test.go index 1f820fa5..136db3a0 100644 --- a/acme/db/nosql/wire_test.go +++ b/acme/db/nosql/wire_test.go @@ -57,7 +57,7 @@ func TestDB_GetDpopToken(t *testing.T) { db: db, }, orderID: "orderID", - expectedErr: errors.New(`error unmarshaling dpop "orderID" into dbDpopToken: invalid character ':' after top-level value`), + expectedErr: errors.New(`failed unmarshaling dpop token "orderID" into dbDpopToken: invalid character ':' after top-level value`), } }, "fail/db.Get": func(t *testing.T) test { @@ -73,7 +73,7 @@ func TestDB_GetDpopToken(t *testing.T) { db: db, }, orderID: "orderID", - expectedErr: errors.New(`error loading dpop "orderID": fail`), + expectedErr: errors.New(`failed loading dpop token "orderID": fail`), } }, "ok": func(t *testing.T) test { @@ -245,7 +245,7 @@ func TestDB_GetOidcToken(t *testing.T) { db: db, }, orderID: "orderID", - expectedErr: errors.New(`error unmarshaling oidc token "orderID" into dbOidcToken: invalid character ':' after top-level value`), + expectedErr: errors.New(`failed unmarshaling oidc token "orderID" into dbOidcToken: invalid character ':' after top-level value`), } }, "fail/db.Get": func(t *testing.T) test { @@ -261,7 +261,7 @@ func TestDB_GetOidcToken(t *testing.T) { db: db, }, orderID: "orderID", - expectedErr: errors.New(`error loading oidc token "orderID": fail`), + expectedErr: errors.New(`failed loading oidc token "orderID": fail`), } }, "ok": func(t *testing.T) test {