github.com/Unheilbar/quorum@v1.0.0/qlight/test/types_test.go (about)

     1  package test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/ethereum/go-ethereum/common"
     7  	"github.com/ethereum/go-ethereum/private/engine"
     8  	"github.com/ethereum/go-ethereum/qlight"
     9  	"github.com/ethereum/go-ethereum/rlp"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestBlockPrivateData_RLPEncodeDecode(t *testing.T) {
    14  	txHash := common.BytesToEncryptedPayloadHash([]byte("EPH1"))
    15  	data := qlight.BlockPrivateData{
    16  		BlockHash:        common.BytesToHash([]byte("BlockHash")),
    17  		PSI:              "PS1",
    18  		PrivateStateRoot: common.BytesToHash([]byte("PSR")),
    19  		PrivateTransactions: []qlight.PrivateTransactionData{
    20  			{
    21  				Hash:    &txHash,
    22  				Payload: []byte("data"),
    23  				Extra: &engine.ExtraMetadata{
    24  					ACHashes:            common.EncryptedPayloadHashes{common.BytesToEncryptedPayloadHash([]byte("ACEPH1")): struct{}{}},
    25  					ACMerkleRoot:        common.BytesToHash([]byte("root")),
    26  					PrivacyFlag:         engine.PrivacyFlagPartyProtection,
    27  					ManagedParties:      []string{"party1", "party2"},
    28  					Sender:              "party3",
    29  					MandatoryRecipients: []string{"party1"},
    30  				},
    31  				IsSender: false,
    32  			}},
    33  	}
    34  
    35  	bytes, err := rlp.EncodeToBytes(data)
    36  	assert.NoError(t, err)
    37  	var decodedData qlight.BlockPrivateData
    38  	err = rlp.DecodeBytes(bytes, &decodedData)
    39  	assert.NoError(t, err)
    40  	assert.Equal(t, data.PSI, decodedData.PSI)
    41  	assert.Equal(t, data.BlockHash, decodedData.BlockHash)
    42  	assert.Equal(t, data.PrivateStateRoot, decodedData.PrivateStateRoot)
    43  	assert.Len(t, decodedData.PrivateTransactions, 1)
    44  	privateTx := decodedData.PrivateTransactions[0]
    45  	assert.Equal(t, &txHash, privateTx.Hash)
    46  	assert.Equal(t, data.PrivateTransactions[0].Payload, privateTx.Payload)
    47  	assert.Equal(t, data.PrivateTransactions[0].IsSender, privateTx.IsSender)
    48  	assert.Equal(t, data.PrivateTransactions[0].Hash, privateTx.Hash)
    49  	assert.Equal(t, data.PrivateTransactions[0].Extra.Sender, privateTx.Extra.Sender)
    50  	assert.Equal(t, data.PrivateTransactions[0].Extra.ACMerkleRoot, privateTx.Extra.ACMerkleRoot)
    51  	assert.Equal(t, data.PrivateTransactions[0].Extra.PrivacyFlag, privateTx.Extra.PrivacyFlag)
    52  	assert.Equal(t, data.PrivateTransactions[0].Extra.MandatoryRecipients, privateTx.Extra.MandatoryRecipients)
    53  	assert.Len(t, decodedData.PrivateTransactions[0].Extra.ACHashes, 1)
    54  	_, found := decodedData.PrivateTransactions[0].Extra.ACHashes[common.BytesToEncryptedPayloadHash([]byte("ACEPH1"))]
    55  	assert.True(t, found)
    56  }