| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- package vaa
- import (
- "bytes"
- "encoding/hex"
- "testing"
- "github.com/ethereum/go-ethereum/common"
- "github.com/stretchr/testify/assert"
- )
- var addr = Address{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}
- var dummyBytes = [32]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}
- func TestCoreModule(t *testing.T) {
- hexifiedCoreModule := "00000000000000000000000000000000000000000000000000000000436f7265"
- assert.Equal(t, hex.EncodeToString(CoreModule), hexifiedCoreModule)
- }
- func TestBodyContractUpgrade(t *testing.T) {
- test := BodyContractUpgrade{ChainID: 1, NewContract: addr}
- assert.Equal(t, test.ChainID, ChainID(1))
- assert.Equal(t, test.NewContract, addr)
- }
- func TestBodyGuardianSetUpdate(t *testing.T) {
- keys := []common.Address{
- common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"),
- common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"),
- }
- test := BodyGuardianSetUpdate{Keys: keys, NewIndex: uint32(1)}
- assert.Equal(t, test.Keys, keys)
- assert.Equal(t, test.NewIndex, uint32(1))
- }
- func TestBodyTokenBridgeRegisterChain(t *testing.T) {
- module := "test"
- test := BodyTokenBridgeRegisterChain{Module: module, ChainID: 1, EmitterAddress: addr}
- assert.Equal(t, test.Module, module)
- assert.Equal(t, test.ChainID, ChainID(1))
- assert.Equal(t, test.EmitterAddress, addr)
- }
- func TestBodyTokenBridgeUpgradeContract(t *testing.T) {
- module := "test"
- test := BodyTokenBridgeUpgradeContract{Module: module, TargetChainID: 1, NewContract: addr}
- assert.Equal(t, test.Module, module)
- assert.Equal(t, test.TargetChainID, ChainID(1))
- assert.Equal(t, test.NewContract, addr)
- }
- func TestBodyContractUpgradeSerialize(t *testing.T) {
- bodyContractUpgrade := BodyContractUpgrade{ChainID: 1, NewContract: addr}
- expected := "00000000000000000000000000000000000000000000000000000000436f72650100010000000000000000000000000000000000000000000000000000000000000004"
- serializedBodyContractUpgrade := bodyContractUpgrade.Serialize()
- assert.Equal(t, expected, hex.EncodeToString(serializedBodyContractUpgrade))
- }
- func TestBodyGuardianSetUpdateSerialize(t *testing.T) {
- keys := []common.Address{
- common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"),
- common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"),
- }
- bodyGuardianSetUpdate := BodyGuardianSetUpdate{Keys: keys, NewIndex: uint32(1)}
- expected := "00000000000000000000000000000000000000000000000000000000436f726502000000000001025aaeb6053f3e94c9b9a09f33669435e7ef1beaed5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"
- serializedBodyGuardianSetUpdate := bodyGuardianSetUpdate.Serialize()
- assert.Equal(t, expected, hex.EncodeToString(serializedBodyGuardianSetUpdate))
- }
- func TestBodyTokenBridgeRegisterChainSerialize(t *testing.T) {
- module := "test"
- tests := []struct {
- name string
- expected string
- object BodyTokenBridgeRegisterChain
- panic bool
- }{
- {
- name: "working_as_expected",
- panic: false,
- object: BodyTokenBridgeRegisterChain{Module: module, ChainID: 1, EmitterAddress: addr},
- expected: "000000000000000000000000000000000000000000000000000000007465737401000000010000000000000000000000000000000000000000000000000000000000000004",
- },
- {
- name: "panic_at_the_disco!",
- panic: true,
- object: BodyTokenBridgeRegisterChain{Module: "123456789012345678901234567890123", ChainID: 1, EmitterAddress: addr},
- expected: "payload longer than 32 bytes",
- },
- }
- for _, testCase := range tests {
- t.Run(testCase.name, func(t *testing.T) {
- if testCase.panic {
- assert.PanicsWithValue(t, testCase.expected, func() { testCase.object.Serialize() })
- } else {
- assert.Equal(t, testCase.expected, hex.EncodeToString(testCase.object.Serialize()))
- }
- })
- }
- }
- func TestBodyTokenBridgeUpgradeContractSerialize(t *testing.T) {
- module := "test"
- bodyTokenBridgeUpgradeContract := BodyTokenBridgeUpgradeContract{Module: module, TargetChainID: 1, NewContract: addr}
- expected := "00000000000000000000000000000000000000000000000000000000746573740200010000000000000000000000000000000000000000000000000000000000000004"
- serializedBodyTokenBridgeUpgradeContract := bodyTokenBridgeUpgradeContract.Serialize()
- assert.Equal(t, expected, hex.EncodeToString(serializedBodyTokenBridgeUpgradeContract))
- }
- func TestBodyWormchainStoreCodeSerialize(t *testing.T) {
- expected := "0000000000000000000000000000000000000000005761736d644d6f64756c65010c200102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"
- bodyWormchainStoreCode := BodyWormchainStoreCode{WasmHash: dummyBytes}
- assert.Equal(t, expected, hex.EncodeToString(bodyWormchainStoreCode.Serialize()))
- }
- func TestBodyWormchainInstantiateContractSerialize(t *testing.T) {
- actual := BodyWormchainInstantiateContract{InstantiationParamsHash: dummyBytes}
- expected := "0000000000000000000000000000000000000000005761736d644d6f64756c65020c200102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"
- assert.Equal(t, expected, hex.EncodeToString(actual.Serialize()))
- }
- func TestBodyWormchainMigrateContractSerialize(t *testing.T) {
- actual := BodyWormchainMigrateContract{MigrationParamsHash: dummyBytes}
- expected := "0000000000000000000000000000000000000000005761736d644d6f64756c65030c200102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"
- assert.Equal(t, expected, hex.EncodeToString(actual.Serialize()))
- }
- func TestBodyCircleIntegrationUpdateWormholeFinalitySerialize(t *testing.T) {
- expected := "000000000000000000000000000000436972636c65496e746567726174696f6e0100022a"
- bodyCircleIntegrationUpdateWormholeFinality := BodyCircleIntegrationUpdateWormholeFinality{TargetChainID: ChainIDEthereum, Finality: 42}
- assert.Equal(t, expected, hex.EncodeToString(bodyCircleIntegrationUpdateWormholeFinality.Serialize()))
- }
- func TestBodyCircleIntegrationRegisterEmitterAndDomainSerialize(t *testing.T) {
- expected := "000000000000000000000000000000436972636c65496e746567726174696f6e020002000600000000000000000000000000000000000000000000000000000000000000040000002a"
- bodyCircleIntegrationRegisterEmitterAndDomain := BodyCircleIntegrationRegisterEmitterAndDomain{
- TargetChainID: ChainIDEthereum,
- ForeignEmitterChainId: ChainIDAvalanche,
- ForeignEmitterAddress: addr,
- CircleDomain: 42,
- }
- assert.Equal(t, expected, hex.EncodeToString(bodyCircleIntegrationRegisterEmitterAndDomain.Serialize()))
- }
- func TestBodyCircleIntegrationUpgradeContractImplementationSerialize(t *testing.T) {
- expected := "000000000000000000000000000000436972636c65496e746567726174696f6e0300020000000000000000000000000000000000000000000000000000000000000004"
- bodyCircleIntegrationUpgradeContractImplementation := BodyCircleIntegrationUpgradeContractImplementation{
- TargetChainID: ChainIDEthereum,
- NewImplementationAddress: addr,
- }
- assert.Equal(t, expected, hex.EncodeToString(bodyCircleIntegrationUpgradeContractImplementation.Serialize()))
- }
- func TestBodyIbcReceiverUpdateChannelChain(t *testing.T) {
- expected := "0000000000000000000000000000000000000000004962635265636569766572010c20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006368616e6e656c2d300013"
- channelId := LeftPadIbcChannelId("channel-0")
- bodyIbcReceiverUpdateChannelChain := BodyIbcUpdateChannelChain{
- TargetChainId: ChainIDWormchain,
- ChannelId: channelId,
- ChainId: ChainIDInjective,
- }
- assert.Equal(t, expected, hex.EncodeToString(bodyIbcReceiverUpdateChannelChain.Serialize(IbcReceiverModuleStr)))
- }
- func TestLeftPadBytes(t *testing.T) {
- payload := "AAAA"
- paddedPayload := LeftPadBytes(payload, int(8))
- buf := &bytes.Buffer{}
- buf.WriteByte(0x00)
- buf.WriteByte(0x00)
- buf.WriteByte(0x00)
- buf.WriteByte(0x00)
- buf.Write([]byte(payload))
- assert.Equal(t, paddedPayload, buf)
- }
- func FuzzLeftPadBytes(f *testing.F) {
- // Add examples to our fuzz corpus
- f.Add("FOO", 8)
- f.Add("123", 8)
- f.Fuzz(func(t *testing.T, payload string, length int) {
- // We know length could be negative, but we panic if it is in the implementation
- if length < 0 {
- t.Skip()
- }
- // We know we cannot left pad something shorter than the payload being provided, but we panic if it is
- if len(payload) > length {
- t.Skip()
- }
- paddedPayload := LeftPadBytes(payload, length)
- // paddedPayload must always be equal to length
- assert.Equal(t, paddedPayload.Len(), length)
- })
- }
- func TestBodyWormholeRelayerSetDefaultDeliveryProviderSerialize(t *testing.T) {
- expected := "0000000000000000000000000000000000576f726d686f6c6552656c617965720300040000000000000000000000000000000000000000000000000000000000000004"
- bodyWormholeRelayerSetDefaultDeliveryProvider := BodyWormholeRelayerSetDefaultDeliveryProvider{
- ChainID: 4,
- NewDefaultDeliveryProviderAddress: addr,
- }
- assert.Equal(t, expected, hex.EncodeToString(bodyWormholeRelayerSetDefaultDeliveryProvider.Serialize()))
- }
- func TestBodyGatewayIbcComposabilityMwContractSerialize(t *testing.T) {
- expected := "00000000000000000000000000000000000000476174657761794d6f64756c65010c200102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"
- bodyGatewayIbcComposabilityMwContract := BodyGatewayIbcComposabilityMwContract{
- ContractAddr: dummyBytes,
- }
- assert.Equal(t, expected, hex.EncodeToString(bodyGatewayIbcComposabilityMwContract.Serialize()))
- }
- func TestBodyGatewayIbcComposabilityMwContractDeserialize(t *testing.T) {
- expected := BodyGatewayIbcComposabilityMwContract{
- ContractAddr: dummyBytes,
- }
- var payloadBody BodyGatewayIbcComposabilityMwContract
- payloadBody.Deserialize(dummyBytes[:])
- assert.Equal(t, expected, payloadBody)
- }
|