@@ -99,15 +99,14 @@ func TestSendResponseToIncomingRequest(t *testing.T) {
99
99
var receivedRequestData []byte
100
100
// initialize graphsync on second node to response to requests
101
101
gsnet := td .GraphSyncHost2 ()
102
- err := gsnet .RegisterRequestReceivedHook (
102
+ gsnet .RegisterRequestReceivedHook (
103
103
func (p peer.ID , requestData graphsync.RequestData , hookActions graphsync.RequestReceivedHookActions ) {
104
104
var has bool
105
105
receivedRequestData , has = requestData .Extension (td .extensionName )
106
106
require .True (t , has , "did not have expected extension" )
107
107
hookActions .SendExtensionData (td .extensionResponse )
108
108
},
109
109
)
110
- require .NoError (t , err , "error registering extension" )
111
110
112
111
blockChainLength := 100
113
112
blockChain := testutil .SetupBlockChain (ctx , t , td .loader2 , td .storer2 , 100 , blockChainLength )
@@ -117,7 +116,7 @@ func TestSendResponseToIncomingRequest(t *testing.T) {
117
116
message := gsmsg .New ()
118
117
message .AddRequest (gsmsg .NewRequest (requestID , blockChain .TipLink .(cidlink.Link ).Cid , blockChain .Selector (), graphsync .Priority (math .MaxInt32 ), td .extension ))
119
118
// send request across network
120
- err = td .gsnet1 .SendMessage (ctx , td .host2 .ID (), message )
119
+ err : = td .gsnet1 .SendMessage (ctx , td .host2 .ID (), message )
121
120
require .NoError (t , err )
122
121
// read the values sent back to requestor
123
122
var received gsmsg.GraphSyncMessage
@@ -150,6 +149,27 @@ func TestSendResponseToIncomingRequest(t *testing.T) {
150
149
require .Equal (t , td .extensionResponseData , receivedExtensions [0 ], "did not return correct extension data" )
151
150
}
152
151
152
+ func TestRejectRequestsByDefault (t * testing.T ) {
153
+ // create network
154
+ ctx := context .Background ()
155
+ ctx , cancel := context .WithTimeout (ctx , 1 * time .Second )
156
+ defer cancel ()
157
+ td := newGsTestData (ctx , t )
158
+
159
+ requestor := td .GraphSyncHost1 ()
160
+ // setup responder to disable default validation, meaning all requests are rejected
161
+ _ = td .GraphSyncHost2 (RejectAllRequestsByDefault ())
162
+
163
+ blockChainLength := 5
164
+ blockChain := testutil .SetupBlockChain (ctx , t , td .loader2 , td .storer2 , 5 , blockChainLength )
165
+
166
+ // send request across network
167
+ progressChan , errChan := requestor .Request (ctx , td .host2 .ID (), blockChain .TipLink , blockChain .Selector (), td .extension )
168
+
169
+ testutil .VerifyEmptyResponse (ctx , t , progressChan )
170
+ testutil .VerifySingleTerminalError (ctx , t , errChan )
171
+ }
172
+
153
173
func TestGraphsyncRoundTrip (t * testing.T ) {
154
174
// create network
155
175
ctx := context .Background ()
@@ -170,17 +190,16 @@ func TestGraphsyncRoundTrip(t *testing.T) {
170
190
var receivedResponseData []byte
171
191
var receivedRequestData []byte
172
192
173
- err := requestor .RegisterResponseReceivedHook (
193
+ requestor .RegisterResponseReceivedHook (
174
194
func (p peer.ID , responseData graphsync.ResponseData ) error {
175
195
data , has := responseData .Extension (td .extensionName )
176
196
if has {
177
197
receivedResponseData = data
178
198
}
179
199
return nil
180
200
})
181
- require .NoError (t , err , "Error setting up extension" )
182
201
183
- err = responder .RegisterRequestReceivedHook (func (p peer.ID , requestData graphsync.RequestData , hookActions graphsync.RequestReceivedHookActions ) {
202
+ responder .RegisterRequestReceivedHook (func (p peer.ID , requestData graphsync.RequestData , hookActions graphsync.RequestReceivedHookActions ) {
184
203
var has bool
185
204
receivedRequestData , has = requestData .Extension (td .extensionName )
186
205
if ! has {
@@ -189,7 +208,6 @@ func TestGraphsyncRoundTrip(t *testing.T) {
189
208
hookActions .SendExtensionData (td .extensionResponse )
190
209
}
191
210
})
192
- require .NoError (t , err , "Error setting up extension" )
193
211
194
212
progressChan , errChan := requestor .Request (ctx , td .host2 .ID (), blockChain .TipLink , blockChain .Selector (), td .extension )
195
213
@@ -342,15 +360,14 @@ func TestUnixFSFetch(t *testing.T) {
342
360
requestor := New (ctx , td .gsnet1 , loader1 , storer1 )
343
361
responder := New (ctx , td .gsnet2 , loader2 , storer2 )
344
362
extensionName := graphsync .ExtensionName ("Free for all" )
345
- err = responder .RegisterRequestReceivedHook (func (p peer.ID , requestData graphsync.RequestData , hookActions graphsync.RequestReceivedHookActions ) {
363
+ responder .RegisterRequestReceivedHook (func (p peer.ID , requestData graphsync.RequestData , hookActions graphsync.RequestReceivedHookActions ) {
346
364
hookActions .ValidateRequest ()
347
365
hookActions .SendExtensionData (graphsync.ExtensionData {
348
366
Name : extensionName ,
349
367
Data : nil ,
350
368
})
351
369
})
352
- require .NoError (t , err )
353
-
370
+
354
371
// make a go-ipld-prime link for the root UnixFS node
355
372
clink := cidlink.Link {Cid : nd .Cid ()}
356
373
@@ -443,13 +460,13 @@ func newGsTestData(ctx context.Context, t *testing.T) *gsTestData {
443
460
return td
444
461
}
445
462
446
- func (td * gsTestData ) GraphSyncHost1 () graphsync.GraphExchange {
447
- return New (td .ctx , td .gsnet1 , td .loader1 , td .storer1 )
463
+ func (td * gsTestData ) GraphSyncHost1 (options ... Option ) graphsync.GraphExchange {
464
+ return New (td .ctx , td .gsnet1 , td .loader1 , td .storer1 , options ... )
448
465
}
449
466
450
- func (td * gsTestData ) GraphSyncHost2 () graphsync.GraphExchange {
467
+ func (td * gsTestData ) GraphSyncHost2 (options ... Option ) graphsync.GraphExchange {
451
468
452
- return New (td .ctx , td .gsnet2 , td .loader2 , td .storer2 )
469
+ return New (td .ctx , td .gsnet2 , td .loader2 , td .storer2 , options ... )
453
470
}
454
471
455
472
type receivedMessage struct {
0 commit comments