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 }