chainclientinterceptors_test.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package internal
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "google.golang.org/grpc"
  7. )
  8. func TestWithStreamClientInterceptors(t *testing.T) {
  9. opts := WithStreamClientInterceptors()
  10. assert.NotNil(t, opts)
  11. }
  12. func TestWithUnaryClientInterceptors(t *testing.T) {
  13. opts := WithUnaryClientInterceptors()
  14. assert.NotNil(t, opts)
  15. }
  16. func TestChainStreamClientInterceptors_zero(t *testing.T) {
  17. var vals []int
  18. interceptors := chainStreamClientInterceptors()
  19. _, err := interceptors(context.Background(), nil, new(grpc.ClientConn), "/foo",
  20. func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string,
  21. opts ...grpc.CallOption) (grpc.ClientStream, error) {
  22. vals = append(vals, 1)
  23. return nil, nil
  24. })
  25. assert.Nil(t, err)
  26. assert.ElementsMatch(t, []int{1}, vals)
  27. }
  28. func TestChainStreamClientInterceptors_one(t *testing.T) {
  29. var vals []int
  30. interceptors := chainStreamClientInterceptors(func(ctx context.Context, desc *grpc.StreamDesc,
  31. cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (
  32. grpc.ClientStream, error) {
  33. vals = append(vals, 1)
  34. return streamer(ctx, desc, cc, method, opts...)
  35. })
  36. _, err := interceptors(context.Background(), nil, new(grpc.ClientConn), "/foo",
  37. func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string,
  38. opts ...grpc.CallOption) (grpc.ClientStream, error) {
  39. vals = append(vals, 2)
  40. return nil, nil
  41. })
  42. assert.Nil(t, err)
  43. assert.ElementsMatch(t, []int{1, 2}, vals)
  44. }
  45. func TestChainStreamClientInterceptors_more(t *testing.T) {
  46. var vals []int
  47. interceptors := chainStreamClientInterceptors(func(ctx context.Context, desc *grpc.StreamDesc,
  48. cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (
  49. grpc.ClientStream, error) {
  50. vals = append(vals, 1)
  51. return streamer(ctx, desc, cc, method, opts...)
  52. }, func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string,
  53. streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {
  54. vals = append(vals, 2)
  55. return streamer(ctx, desc, cc, method, opts...)
  56. })
  57. _, err := interceptors(context.Background(), nil, new(grpc.ClientConn), "/foo",
  58. func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string,
  59. opts ...grpc.CallOption) (grpc.ClientStream, error) {
  60. vals = append(vals, 3)
  61. return nil, nil
  62. })
  63. assert.Nil(t, err)
  64. assert.ElementsMatch(t, []int{1, 2, 3}, vals)
  65. }
  66. func TestWithUnaryClientInterceptors_zero(t *testing.T) {
  67. var vals []int
  68. interceptors := chainUnaryClientInterceptors()
  69. err := interceptors(context.Background(), "/foo", nil, nil, new(grpc.ClientConn),
  70. func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn,
  71. opts ...grpc.CallOption) error {
  72. vals = append(vals, 1)
  73. return nil
  74. })
  75. assert.Nil(t, err)
  76. assert.ElementsMatch(t, []int{1}, vals)
  77. }
  78. func TestWithUnaryClientInterceptors_one(t *testing.T) {
  79. var vals []int
  80. interceptors := chainUnaryClientInterceptors(func(ctx context.Context, method string, req,
  81. reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
  82. vals = append(vals, 1)
  83. return invoker(ctx, method, req, reply, cc, opts...)
  84. })
  85. err := interceptors(context.Background(), "/foo", nil, nil, new(grpc.ClientConn),
  86. func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn,
  87. opts ...grpc.CallOption) error {
  88. vals = append(vals, 2)
  89. return nil
  90. })
  91. assert.Nil(t, err)
  92. assert.ElementsMatch(t, []int{1, 2}, vals)
  93. }
  94. func TestWithUnaryClientInterceptors_more(t *testing.T) {
  95. var vals []int
  96. interceptors := chainUnaryClientInterceptors(func(ctx context.Context, method string, req,
  97. reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
  98. vals = append(vals, 1)
  99. return invoker(ctx, method, req, reply, cc, opts...)
  100. }, func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn,
  101. invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
  102. vals = append(vals, 2)
  103. return invoker(ctx, method, req, reply, cc, opts...)
  104. })
  105. err := interceptors(context.Background(), "/foo", nil, nil, new(grpc.ClientConn),
  106. func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn,
  107. opts ...grpc.CallOption) error {
  108. vals = append(vals, 3)
  109. return nil
  110. })
  111. assert.Nil(t, err)
  112. assert.ElementsMatch(t, []int{1, 2, 3}, vals)
  113. }