You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
967 B
34 lines
967 B
package warden
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
func TestChainUnaryClient(t *testing.T) {
|
|
var orders []string
|
|
factory := func(name string) grpc.UnaryClientInterceptor {
|
|
return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
|
|
orders = append(orders, name+"-in")
|
|
err := invoker(ctx, method, req, reply, cc, opts...)
|
|
orders = append(orders, name+"-out")
|
|
return err
|
|
}
|
|
}
|
|
handlers := []grpc.UnaryClientInterceptor{factory("h1"), factory("h2"), factory("h3")}
|
|
interceptor := chainUnaryClient(handlers)
|
|
interceptor(context.Background(), "test", nil, nil, nil, func(context.Context, string, interface{}, interface{}, *grpc.ClientConn, ...grpc.CallOption) error {
|
|
return nil
|
|
})
|
|
assert.Equal(t, []string{
|
|
"h1-in",
|
|
"h2-in",
|
|
"h3-in",
|
|
"h3-out",
|
|
"h2-out",
|
|
"h1-out",
|
|
}, orders)
|
|
}
|
|
|