github.com/decred/dcrlnd@v0.7.6/lnwallet/chancloser/chancloser_test.go (about) 1 package chancloser 2 3 import ( 4 "crypto/rand" 5 "testing" 6 7 "github.com/decred/dcrlnd/lnwire" 8 ) 9 10 // randDeliveryAddress generates a random delivery address for testing. 11 func randDeliveryAddress(t *testing.T) lnwire.DeliveryAddress { 12 // Generate an address of maximum length. 13 da := lnwire.DeliveryAddress(make([]byte, 34)) 14 15 _, err := rand.Read(da) 16 if err != nil { 17 t.Fatalf("cannot generate random address: %v", err) 18 } 19 20 return da 21 } 22 23 // TestMaybeMatchScript tests that the maybeMatchScript errors appropriately 24 // when an upfront shutdown script is set and the script provided does not 25 // match, and does not error in any other case. 26 func TestMaybeMatchScript(t *testing.T) { 27 addr1 := randDeliveryAddress(t) 28 addr2 := randDeliveryAddress(t) 29 30 tests := []struct { 31 name string 32 shutdownScript lnwire.DeliveryAddress 33 upfrontScript lnwire.DeliveryAddress 34 expectedErr error 35 }{ 36 { 37 name: "no upfront shutdown set, script ok", 38 shutdownScript: addr1, 39 upfrontScript: []byte{}, 40 expectedErr: nil, 41 }, 42 { 43 name: "upfront shutdown set, script ok", 44 shutdownScript: addr1, 45 upfrontScript: addr1, 46 expectedErr: nil, 47 }, 48 { 49 name: "upfront shutdown set, script not ok", 50 shutdownScript: addr1, 51 upfrontScript: addr2, 52 expectedErr: ErrUpfrontShutdownScriptMismatch, 53 }, 54 { 55 name: "nil shutdown and empty upfront", 56 shutdownScript: nil, 57 upfrontScript: []byte{}, 58 expectedErr: nil, 59 }, 60 } 61 62 for _, test := range tests { 63 test := test 64 65 t.Run(test.name, func(t *testing.T) { 66 err := maybeMatchScript( 67 func() error { return nil }, test.upfrontScript, 68 test.shutdownScript, 69 ) 70 71 if err != test.expectedErr { 72 t.Fatalf("Error: %v, expected error: %v", err, test.expectedErr) 73 } 74 }) 75 } 76 }