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.
 
 
 
 
kratos/pkg/net/rpc/warden/client_test.go

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)
}