boulder/mocks/grpc.go

32 lines
773 B
Go

package mocks
import (
"io"
"google.golang.org/grpc"
)
// ServerStreamClient is a mock which satisfies the grpc.ClientStream interface,
// allowing it to be returned by methods where the server returns a stream of
// results. It can be populated with a list of results to return, or an error
// to return.
type ServerStreamClient[T any] struct {
grpc.ClientStream
Results []*T
Err error
}
// Recv returns the error, if populated. Otherwise it returns the next item from
// the list of results. If it has returned all items already, it returns EOF.
func (c *ServerStreamClient[T]) Recv() (*T, error) {
if c.Err != nil {
return nil, c.Err
}
if len(c.Results) == 0 {
return nil, io.EOF
}
res := c.Results[0]
c.Results = c.Results[1:]
return res, nil
}