github.com/Bytom/bytom@v1.1.2-0.20210127130405-ae40204c0b09/blockchain/txbuilder/witness_test.go (about)

     1  package txbuilder
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/davecgh/go-spew/spew"
     8  
     9  	chainjson "github.com/bytom/bytom/encoding/json"
    10  	"github.com/bytom/bytom/testutil"
    11  )
    12  
    13  func TestWitnessJSON(t *testing.T) {
    14  	si := &SigningInstruction{
    15  		Position: 17,
    16  		WitnessComponents: []witnessComponent{
    17  			DataWitness{1, 2, 3},
    18  			&SignatureWitness{
    19  				Quorum: 4,
    20  				Keys: []keyID{{
    21  					XPub:           testutil.TestXPub,
    22  					DerivationPath: []chainjson.HexBytes{{5, 6, 7}},
    23  				}},
    24  				Sigs: []chainjson.HexBytes{{8, 9, 10}},
    25  			},
    26  			&RawTxSigWitness{
    27  				Quorum: 20,
    28  				Keys: []keyID{{
    29  					XPub:           testutil.TestXPub,
    30  					DerivationPath: []chainjson.HexBytes{{21, 22}},
    31  				}},
    32  				Sigs: []chainjson.HexBytes{{23, 24, 25}},
    33  			},
    34  		},
    35  	}
    36  
    37  	b, err := json.MarshalIndent(si, "", "  ")
    38  	if err != nil {
    39  		t.Fatal(err)
    40  	}
    41  
    42  	var got SigningInstruction
    43  	err = json.Unmarshal(b, &got)
    44  	if err != nil {
    45  		t.Fatalf("error on input %s: %s", b, err)
    46  	}
    47  
    48  	if !testutil.DeepEqual(si, &got) {
    49  		t.Errorf("got:\n%s\nwant:\n%s\nJSON was: %s", spew.Sdump(&got), spew.Sdump(si), string(b))
    50  	}
    51  }