github.com/letsencrypt/boulder@v0.20251208.0/test/inmem/nonce/nonce.go (about)

     1  package inmemnonce
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/go-jose/go-jose/v4"
     7  	"google.golang.org/grpc"
     8  	"google.golang.org/protobuf/types/known/emptypb"
     9  
    10  	"github.com/letsencrypt/boulder/nonce"
    11  	noncepb "github.com/letsencrypt/boulder/nonce/proto"
    12  )
    13  
    14  // NonceService implements noncepb.NonceServiceClient for tests.
    15  type NonceService struct {
    16  	noncepb.NonceServiceClient
    17  	Impl *nonce.NonceService
    18  }
    19  
    20  var _ noncepb.NonceServiceClient = &NonceService{}
    21  
    22  func (ns *NonceService) Nonce(ctx context.Context, req *emptypb.Empty, opts ...grpc.CallOption) (*noncepb.NonceMessage, error) {
    23  	return ns.Impl.Nonce(ctx, req)
    24  }
    25  
    26  func (ns *NonceService) Redeem(ctx context.Context, req *noncepb.NonceMessage, opts ...grpc.CallOption) (*noncepb.ValidMessage, error) {
    27  	return ns.Impl.Redeem(ctx, req)
    28  }
    29  
    30  // AsSource returns a wrapper type that implements jose.NonceSource using this
    31  // inmemory service. This is useful so that tests can get nonces for signing
    32  // their JWS that will be accepted by the test WFE configured using this service.
    33  func (ns *NonceService) AsSource() jose.NonceSource {
    34  	return nonceServiceAdapter{ns}
    35  }
    36  
    37  // nonceServiceAdapter changes the gRPC nonce service interface to the one
    38  // required by jose. Used only for tests.
    39  type nonceServiceAdapter struct {
    40  	noncepb.NonceServiceClient
    41  }
    42  
    43  // Nonce returns a nonce, implementing the jose.NonceSource interface
    44  func (nsa nonceServiceAdapter) Nonce() (string, error) {
    45  	resp, err := nsa.NonceServiceClient.Nonce(context.Background(), &emptypb.Empty{})
    46  	if err != nil {
    47  		return "", err
    48  	}
    49  	return resp.Nonce, nil
    50  }
    51  
    52  var _ jose.NonceSource = nonceServiceAdapter{}