github.com/MetalBlockchain/subnet-evm@v0.4.9/plugin/evm/message/code_request_test.go (about)

     1  // (c) 2021-2022, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package message
     5  
     6  import (
     7  	"encoding/base64"
     8  	"math/rand"
     9  	"testing"
    10  
    11  	"github.com/ethereum/go-ethereum/common"
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  // TestMarshalCodeRequest asserts that the structure or serialization logic hasn't changed, primarily to
    16  // ensure compatibility with the network.
    17  func TestMarshalCodeRequest(t *testing.T) {
    18  	codeRequest := CodeRequest{
    19  		Hashes: []common.Hash{common.BytesToHash([]byte("some code pls"))},
    20  	}
    21  
    22  	base64CodeRequest := "AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAHNvbWUgY29kZSBwbHM="
    23  
    24  	codeRequestBytes, err := Codec.Marshal(Version, codeRequest)
    25  	assert.NoError(t, err)
    26  	assert.Equal(t, base64CodeRequest, base64.StdEncoding.EncodeToString(codeRequestBytes))
    27  
    28  	var c CodeRequest
    29  	_, err = Codec.Unmarshal(codeRequestBytes, &c)
    30  	assert.NoError(t, err)
    31  	assert.Equal(t, codeRequest.Hashes, c.Hashes)
    32  }
    33  
    34  // TestMarshalCodeResponse asserts that the structure or serialization logic hasn't changed, primarily to
    35  // ensure compatibility with the network.
    36  func TestMarshalCodeResponse(t *testing.T) {
    37  	// generate some random code data
    38  	// set random seed for deterministic random
    39  	rand.Seed(1)
    40  	codeData := make([]byte, 50)
    41  	_, err := rand.Read(codeData)
    42  	assert.NoError(t, err)
    43  
    44  	codeResponse := CodeResponse{
    45  		Data: [][]byte{codeData},
    46  	}
    47  
    48  	base64CodeResponse := "AAAAAAABAAAAMlL9/AchgmVPFj9fD5piHXKVZsdNEAN8TXu7BAfR4sZJgYVa2GgdDYbR6R4AFnk5y2aU"
    49  
    50  	codeResponseBytes, err := Codec.Marshal(Version, codeResponse)
    51  	assert.NoError(t, err)
    52  	assert.Equal(t, base64CodeResponse, base64.StdEncoding.EncodeToString(codeResponseBytes))
    53  
    54  	var c CodeResponse
    55  	_, err = Codec.Unmarshal(codeResponseBytes, &c)
    56  	assert.NoError(t, err)
    57  	assert.Equal(t, codeResponse.Data, c.Data)
    58  }