github.com/lingyao2333/mo-zero@v1.4.1/zrpc/proxy_test.go (about) 1 package zrpc 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/lingyao2333/mo-zero/zrpc/internal/mock" 9 "github.com/stretchr/testify/assert" 10 "google.golang.org/grpc" 11 "google.golang.org/grpc/codes" 12 "google.golang.org/grpc/credentials/insecure" 13 "google.golang.org/grpc/status" 14 ) 15 16 func TestProxy(t *testing.T) { 17 tests := []struct { 18 name string 19 amount float32 20 res *mock.DepositResponse 21 errCode codes.Code 22 errMsg string 23 }{ 24 { 25 "invalid request with negative amount", 26 -1.11, 27 nil, 28 codes.InvalidArgument, 29 fmt.Sprintf("cannot deposit %v", -1.11), 30 }, 31 { 32 "valid request with non negative amount", 33 0.00, 34 &mock.DepositResponse{Ok: true}, 35 codes.OK, 36 "", 37 }, 38 } 39 40 proxy := NewProxy("foo", WithDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), 41 WithDialOption(grpc.WithContextDialer(dialer()))) 42 for _, tt := range tests { 43 t.Run(tt.name, func(t *testing.T) { 44 conn, err := proxy.TakeConn(context.Background()) 45 assert.Nil(t, err) 46 cli := mock.NewDepositServiceClient(conn) 47 request := &mock.DepositRequest{Amount: tt.amount} 48 response, err := cli.Deposit(context.Background(), request) 49 if response != nil { 50 assert.True(t, len(response.String()) > 0) 51 if response.GetOk() != tt.res.GetOk() { 52 t.Error("response: expected", tt.res.GetOk(), "received", response.GetOk()) 53 } 54 } 55 if err != nil { 56 if e, ok := status.FromError(err); ok { 57 if e.Code() != tt.errCode { 58 t.Error("error code: expected", codes.InvalidArgument, "received", e.Code()) 59 } 60 if e.Message() != tt.errMsg { 61 t.Error("error message: expected", tt.errMsg, "received", e.Message()) 62 } 63 } 64 } 65 }) 66 } 67 } 68 69 func TestRpcProxy_TakeConnNewClientFailed(t *testing.T) { 70 proxy := NewProxy("foo", WithDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), 71 WithDialOption(grpc.WithBlock())) 72 _, err := proxy.TakeConn(context.Background()) 73 assert.NotNil(t, err) 74 }