@@ -19,6 +19,7 @@ package rpc
19
19
import (
20
20
"context"
21
21
"encoding/json"
22
+ "errors"
22
23
"fmt"
23
24
"math/rand"
24
25
"net"
@@ -144,6 +145,53 @@ func TestClientBatchRequest(t *testing.T) {
144
145
}
145
146
}
146
147
148
+ func TestClientBatchRequest_len (t * testing.T ) {
149
+ b , err := json .Marshal ([]jsonrpcMessage {
150
+ {Version : "2.0" , ID : json .RawMessage ("1" ), Method : "foo" , Result : json .RawMessage (`"0x1"` )},
151
+ {Version : "2.0" , ID : json .RawMessage ("2" ), Method : "bar" , Result : json .RawMessage (`"0x2"` )},
152
+ })
153
+ if err != nil {
154
+ t .Fatal ("failed to encode jsonrpc message:" , err )
155
+ }
156
+ s := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , r * http.Request ) {
157
+ _ , err := rw .Write (b )
158
+ if err != nil {
159
+ t .Error ("failed to write response:" , err )
160
+ }
161
+ }))
162
+ t .Cleanup (s .Close )
163
+
164
+ client , err := Dial (s .URL )
165
+ if err != nil {
166
+ t .Fatal ("failed to dial test server:" , err )
167
+ }
168
+ defer client .Close ()
169
+
170
+ t .Run ("too-few" , func (t * testing.T ) {
171
+ batch := []BatchElem {
172
+ {Method : "foo" },
173
+ {Method : "bar" },
174
+ {Method : "baz" },
175
+ }
176
+ ctx , cancelFn := context .WithTimeout (context .Background (), time .Second )
177
+ defer cancelFn ()
178
+ if err := client .BatchCallContext (ctx , batch ); ! errors .Is (err , ErrBadResult ) {
179
+ t .Errorf ("expected %q but got: %v" , ErrBadResult , err )
180
+ }
181
+ })
182
+
183
+ t .Run ("too-many" , func (t * testing.T ) {
184
+ batch := []BatchElem {
185
+ {Method : "foo" },
186
+ }
187
+ ctx , cancelFn := context .WithTimeout (context .Background (), time .Second )
188
+ defer cancelFn ()
189
+ if err := client .BatchCallContext (ctx , batch ); ! errors .Is (err , ErrBadResult ) {
190
+ t .Errorf ("expected %q but got: %v" , ErrBadResult , err )
191
+ }
192
+ })
193
+ }
194
+
147
195
func TestClientNotify (t * testing.T ) {
148
196
server := newTestServer ()
149
197
defer server .Stop ()
0 commit comments