@@ -351,3 +351,95 @@ func publishBidderWithdrawal(
351351
352352 return nil
353353}
354+
355+ func TestPendingRefunds (t * testing.T ) {
356+ t .Parallel ()
357+
358+ logger := util .NewTestLogger (io .Discard )
359+ st := depositstore .New (inmemstorage .New ())
360+ dm := depositmanager .NewDepositManager (st , nil , nil , logger )
361+
362+ digest1 := depositmanager.CommitmentDigest {
363+ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 ,
364+ }
365+
366+ pendingRefund , ok := dm .GetPendingRefund (digest1 )
367+ if ok {
368+ t .Fatal ("expected no pending refunds" )
369+ }
370+ if pendingRefund != (depositmanager.PendingRefund {}) {
371+ t .Fatal ("expected zeroed pending refund" )
372+ }
373+
374+ dm .AddPendingRefund (digest1 , common .HexToAddress ("0x123" ), common .HexToAddress ("0x456" ), big .NewInt (100 ))
375+
376+ pendingRefund , ok = dm .GetPendingRefund (digest1 )
377+ if ! ok {
378+ t .Fatal ("expected pending refund" )
379+ }
380+ if pendingRefund .Bidder != common .HexToAddress ("0x123" ) {
381+ t .Fatal ("expected bidder 0x123" )
382+ }
383+ if pendingRefund .Provider != common .HexToAddress ("0x456" ) {
384+ t .Fatal ("expected provider 0x456" )
385+ }
386+ if pendingRefund .Amount .Cmp (big .NewInt (100 )) != 0 {
387+ t .Fatal ("expected amount 100" )
388+ }
389+
390+ err := st .SetBalance (common .HexToAddress ("0x123" ), common .HexToAddress ("0x456" ), big .NewInt (77 ))
391+ if err != nil {
392+ t .Fatal (err )
393+ }
394+
395+ balance , err := st .GetBalance (common .HexToAddress ("0x123" ), common .HexToAddress ("0x456" ))
396+ if err != nil {
397+ t .Fatal (err )
398+ }
399+ if balance .Cmp (big .NewInt (77 )) != 0 {
400+ t .Fatal ("expected balance 77" )
401+ }
402+
403+ err = dm .ApplyPendingRefund (digest1 )
404+ if err != nil {
405+ t .Fatal (err )
406+ }
407+
408+ balance , err = st .GetBalance (common .HexToAddress ("0x123" ), common .HexToAddress ("0x456" ))
409+ if err != nil {
410+ t .Fatal (err )
411+ }
412+ if balance .Cmp (big .NewInt (177 )) != 0 {
413+ t .Fatal ("expected balance 177" )
414+ }
415+
416+ digest2 := depositmanager.CommitmentDigest {
417+ 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 ,
418+ }
419+
420+ dm .AddPendingRefund (digest2 , common .HexToAddress ("0x123" ), common .HexToAddress ("0x456" ), big .NewInt (302 ))
421+
422+ pendingRefund , ok = dm .GetPendingRefund (digest2 )
423+ if ! ok {
424+ t .Fatal ("expected pending refund" )
425+ }
426+ if pendingRefund .Bidder != common .HexToAddress ("0x123" ) {
427+ t .Fatal ("expected bidder 0x123" )
428+ }
429+ if pendingRefund .Provider != common .HexToAddress ("0x456" ) {
430+ t .Fatal ("expected provider 0x456" )
431+ }
432+ if pendingRefund .Amount .Cmp (big .NewInt (302 )) != 0 {
433+ t .Fatal ("expected amount 302" )
434+ }
435+
436+ err = dm .DropPendingRefund (digest2 )
437+ if err != nil {
438+ t .Fatal (err )
439+ }
440+
441+ pendingRefund , ok = dm .GetPendingRefund (digest2 )
442+ if ok {
443+ t .Fatal ("expected no pending refund" )
444+ }
445+ }
0 commit comments