@@ -186,23 +186,39 @@ func testTrustConfig(t *testing.T, keychain ndn.KeyChain, schema ndn.TrustSchema
186186 // Simulate fetch from network using engine
187187 fetchCount := 0
188188 fetch := func (name enc.Name , _ * ndn.InterestConfig , callback ndn.ExpressCallbackFunc ) {
189- fetchCount ++
190- for certName , certWire := range network {
191- if strings .HasPrefix (certName , name .String ()) {
192- data , sigCov , err := spec.Spec {}.ReadData (enc .NewWireView (certWire ))
193- callback (ndn.ExpressCallbackArgs {
194- Result : ndn .InterestResultData ,
195- Data : data ,
196- RawData : certWire ,
197- SigCovered : sigCov ,
198- Error : err ,
199- })
200- return
189+ var certWire enc.Wire = nil
190+ var isLocal bool = false
191+
192+ // Fetch functions are required to check the store first
193+ if buf , _ := keychain .Store ().Get (name , true ); buf != nil {
194+ certWire = enc.Wire {buf }
195+ isLocal = true
196+ } else {
197+ // Simulate fetch from network
198+ fetchCount ++
199+ for netName , netWire := range network {
200+ if strings .HasPrefix (netName , name .String ()) {
201+ certWire = netWire
202+ break
203+ }
201204 }
202205 }
203- callback (ndn.ExpressCallbackArgs {
204- Result : ndn .InterestResultNack ,
205- })
206+
207+ if certWire != nil {
208+ data , sigCov , err := spec.Spec {}.ReadData (enc .NewWireView (certWire ))
209+ callback (ndn.ExpressCallbackArgs {
210+ Result : ndn .InterestResultData ,
211+ Data : data ,
212+ RawData : certWire ,
213+ SigCovered : sigCov ,
214+ Error : err ,
215+ IsLocal : isLocal ,
216+ })
217+ } else {
218+ callback (ndn.ExpressCallbackArgs {
219+ Result : ndn .InterestResultNack ,
220+ })
221+ }
206222 }
207223
208224 // Create trust config
@@ -247,10 +263,15 @@ func testTrustConfig(t *testing.T, keychain ndn.KeyChain, schema ndn.TrustSchema
247263 require .True (t , validateSync ("/test/bob/data1" , bobSigner ))
248264 require .Equal (t , 1 , fetchCount ) // fetch bob's certificate
249265 require .True (t , validateSync ("/test/bob/data2" , bobSigner ))
250- require .Equal (t , 1 , fetchCount ) // cert in store
266+ require .Equal (t , 1 , fetchCount ) // cert in cache
251267 require .True (t , validateSync ("/test/cathy/data1" , cathySigner ))
252268 require .Equal (t , 1 , fetchCount ) // have all certificates
253269
270+ // Make sure that bob's cert was inserted into the store
271+ if buf , _ := keychain .Store ().Get (bobCertData .Name (), false ); buf == nil {
272+ t .Error ("bob's cert not in store" )
273+ }
274+
254275 // Signing with admin key
255276 require .True (t , validateSync ("/test/admin/alice/data1" , aliceAdminSigner ))
256277
0 commit comments