@@ -44,6 +44,7 @@ var _ = Describe("Client", func() {
44
44
fakeProver = & mock.Prover {}
45
45
fakeProver .RequestImportReturns (payload .Data , nil ) // same data as payload
46
46
fakeProver .RequestTransferReturns (payload .Data , nil )
47
+ fakeProver .RequestRedeemReturns (payload .Data , nil )
47
48
48
49
fakeSigningIdentity = & mock.SigningIdentity {}
49
50
fakeSigningIdentity .SerializeReturns ([]byte ("creator" ), nil ) // same signature as envelope
@@ -256,6 +257,100 @@ var _ = Describe("Client", func() {
256
257
})
257
258
})
258
259
260
+ Describe ("Redeem" , func () {
261
+ var (
262
+ tokenIDs [][]byte
263
+ quantity uint64
264
+ )
265
+
266
+ BeforeEach (func () {
267
+ // input data for redeem
268
+ tokenIDs = [][]byte {[]byte ("id1" ), []byte ("id2" )}
269
+ quantity = 100
270
+ })
271
+
272
+ It ("returns tx envelope without error" , func () {
273
+ txEnvelope , txid , ordererStatus , committed , err := tokenClient .Redeem (tokenIDs , quantity , 10 * time .Second )
274
+ Expect (err ).NotTo (HaveOccurred ())
275
+ Expect (txEnvelope ).To (Equal (envelope ))
276
+ Expect (txid ).To (Equal (expectedTxid ))
277
+ Expect (* ordererStatus ).To (Equal (common .Status_SUCCESS ))
278
+ Expect (committed ).To (Equal (true ))
279
+
280
+ Expect (fakeProver .RequestRedeemCallCount ()).To (Equal (1 ))
281
+ ids , num , signingIdentity := fakeProver .RequestRedeemArgsForCall (0 )
282
+ Expect (ids ).To (Equal (tokenIDs ))
283
+ Expect (num ).To (Equal (quantity ))
284
+ Expect (signingIdentity ).To (Equal (fakeSigningIdentity ))
285
+
286
+ Expect (fakeTxSubmitter .CreateTxEnvelopeCallCount ()).To (Equal (1 ))
287
+ txBytes := fakeTxSubmitter .CreateTxEnvelopeArgsForCall (0 )
288
+ Expect (txBytes ).To (Equal (payload .Data ))
289
+
290
+ Expect (fakeTxSubmitter .SubmitCallCount ()).To (Equal (1 ))
291
+ txEnvelope , waitTime := fakeTxSubmitter .SubmitArgsForCall (0 )
292
+ Expect (txEnvelope ).To (Equal (envelope ))
293
+ Expect (waitTime ).To (Equal (10 * time .Second ))
294
+ })
295
+
296
+ Context ("when prover.RequestRedeem fails" , func () {
297
+ BeforeEach (func () {
298
+ fakeProver .RequestRedeemReturns (nil , errors .New ("wild-banana" ))
299
+ })
300
+
301
+ It ("returns an error" , func () {
302
+ envelope , txid , ordererStatus , committed , err := tokenClient .Redeem (tokenIDs , quantity , 0 )
303
+ Expect (err ).To (MatchError ("wild-banana" ))
304
+ Expect (envelope ).To (BeNil ())
305
+ Expect (txid ).To (Equal ("" ))
306
+ Expect (ordererStatus ).To (BeNil ())
307
+ Expect (committed ).To (Equal (false ))
308
+
309
+ Expect (fakeProver .RequestRedeemCallCount ()).To (Equal (1 ))
310
+ Expect (fakeTxSubmitter .CreateTxEnvelopeCallCount ()).To (Equal (0 ))
311
+ Expect (fakeTxSubmitter .SubmitCallCount ()).To (Equal (0 ))
312
+ })
313
+ })
314
+
315
+ Context ("when TxSubmitter CreateTxEnvelope fails" , func () {
316
+ BeforeEach (func () {
317
+ fakeTxSubmitter .CreateTxEnvelopeReturns (nil , "" , errors .New ("wild-banana" ))
318
+ })
319
+
320
+ It ("returns an error" , func () {
321
+ envelope , txid , ordererStatus , committed , err := tokenClient .Redeem (tokenIDs , quantity , 0 )
322
+ Expect (err ).To (MatchError ("wild-banana" ))
323
+ Expect (envelope ).To (BeNil ())
324
+ Expect (txid ).To (Equal ("" ))
325
+ Expect (ordererStatus ).To (BeNil ())
326
+ Expect (committed ).To (Equal (false ))
327
+
328
+ Expect (fakeProver .RequestRedeemCallCount ()).To (Equal (1 ))
329
+ Expect (fakeTxSubmitter .CreateTxEnvelopeCallCount ()).To (Equal (1 ))
330
+ Expect (fakeTxSubmitter .SubmitCallCount ()).To (Equal (0 ))
331
+ })
332
+ })
333
+
334
+ Context ("when TxSubmitter Submit fails" , func () {
335
+ BeforeEach (func () {
336
+ fakeTxSubmitter .SubmitReturns (nil , false , errors .New ("wild-banana" ))
337
+ })
338
+
339
+ It ("returns an error" , func () {
340
+ txEnvelope , txid , ordererStatus , committed , err := tokenClient .Redeem (tokenIDs , quantity , 0 )
341
+ Expect (err ).To (MatchError ("wild-banana" ))
342
+ Expect (txEnvelope ).To (Equal (envelope ))
343
+ Expect (txid ).To (Equal (expectedTxid ))
344
+ Expect (ordererStatus ).To (BeNil ())
345
+ Expect (committed ).To (Equal (false ))
346
+
347
+ Expect (fakeProver .RequestRedeemCallCount ()).To (Equal (1 ))
348
+ Expect (fakeTxSubmitter .CreateTxEnvelopeCallCount ()).To (Equal (1 ))
349
+ Expect (fakeTxSubmitter .SubmitCallCount ()).To (Equal (1 ))
350
+ })
351
+ })
352
+ })
353
+
259
354
Describe ("ListTokens" , func () {
260
355
var (
261
356
expectedTokens []* token.TokenOutput
0 commit comments