github.com/decred/dcrlnd@v0.7.6/lnwire/accept_channel_test.go (about) 1 package lnwire 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/decred/dcrd/dcrec/secp256k1/v4" 8 ) 9 10 // TestDecodeAcceptChannel tests decoding of an accept channel wire message with 11 // and without the optional upfront shutdown script. 12 func TestDecodeAcceptChannel(t *testing.T) { 13 tests := []struct { 14 name string 15 shutdownScript DeliveryAddress 16 }{ 17 { 18 name: "no upfront shutdown script", 19 shutdownScript: nil, 20 }, 21 { 22 name: "empty byte array", 23 shutdownScript: []byte{}, 24 }, 25 { 26 name: "upfront shutdown script set", 27 shutdownScript: []byte("example"), 28 }, 29 } 30 31 for _, test := range tests { 32 test := test 33 34 t.Run(test.name, func(t *testing.T) { 35 priv, err := secp256k1.GeneratePrivateKey() 36 if err != nil { 37 t.Fatalf("cannot create privkey: %v", err) 38 } 39 pk := priv.PubKey() 40 41 encoded := &AcceptChannel{ 42 PendingChannelID: [32]byte{}, 43 FundingKey: pk, 44 RevocationPoint: pk, 45 PaymentPoint: pk, 46 DelayedPaymentPoint: pk, 47 HtlcPoint: pk, 48 FirstCommitmentPoint: pk, 49 UpfrontShutdownScript: test.shutdownScript, 50 } 51 52 buf := &bytes.Buffer{} 53 if _, err := WriteMessage(buf, encoded, 0); err != nil { 54 t.Fatalf("cannot write message: %v", err) 55 } 56 57 msg, err := ReadMessage(buf, 0) 58 if err != nil { 59 t.Fatalf("cannot read message: %v", err) 60 } 61 62 decoded := msg.(*AcceptChannel) 63 if !bytes.Equal( 64 decoded.UpfrontShutdownScript, encoded.UpfrontShutdownScript, 65 ) { 66 t.Fatalf("decoded script: %x does not equal encoded script: %x", 67 decoded.UpfrontShutdownScript, encoded.UpfrontShutdownScript) 68 } 69 }) 70 } 71 }