Add gRPC support to Pact.
We should note that there are four kinds of services:
- Unary RPCs
- Server streaming RPCs
- Client streaming RPCs
- Bidirectional streaming
Should they be included in the formulation of the consumer contract?
TODO: Specify what a successful implemtation of gRPC support in Pact looks like
As suggested by @bootstraponline, we should look into https://github.com/grpc-ecosystem/grpc-gateway. Since grpc-gateway
converts to rest, it seems that some of the streaming services may not translate well. Additionally, this requires existence of protos and annotations.
Would be used in provider tests
My first idea would be that the protobuf definition is made on the consumer side and compiled into the appropriate language. The resulting class/struct is what the consumer would expect using the Pact DSL. This is then converted into the Pact file with the proper format.
This seems complicated and a redundancy between the .proto definition and the Pact file. Would there be a way to define the message once?