-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* chore: add MsgSend test * chore: add MsgMultiSend test * chore: add MsgDelegate test * chore: add MsgUndelegate test * chore: add MsgBeginRedelegate test * chore: add MsgSetWithdrawAddress tests * chore: add MsgUnparsedMessage and MsgUnsupportedMessage tests * chore: fixed linting * chore: add MsgVote tests * chore: add MsgWithdrawDelegatorReward and MsgWithdrawValidatorCommission tests * chore: add msgRevoke tests * chore: add MsgUpdateClient tests * chore: add MsgExec tests * chore: fixed populate multichain denom alias * chore: add MsgTransfer tests * chore: add MsgGrant tests * chore: add FungiblePacketToken tests * chore: add InterchainAccountsPacket tests * chore: add Packet parse test * chore: add MsgTimeout test * chore: add MsgAcknowledgement * chore: add MsgRecvPacket tests
- Loading branch information
1 parent
5a648d6
commit 1958f33
Showing
42 changed files
with
3,484 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,202 @@ | ||
package messages | ||
|
||
import ( | ||
aliasManagerPkg "main/pkg/alias_manager" | ||
configPkg "main/pkg/config" | ||
configTypes "main/pkg/config/types" | ||
"main/pkg/data_fetcher" | ||
"main/pkg/fs" | ||
loggerPkg "main/pkg/logger" | ||
"main/pkg/metrics" | ||
"main/pkg/types" | ||
"main/pkg/types/event" | ||
"testing" | ||
|
||
cosmosTypes "github.com/cosmos/cosmos-sdk/types" | ||
ibcTypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" | ||
ibcChannelTypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" | ||
|
||
"github.com/gogo/protobuf/proto" | ||
"github.com/stretchr/testify/require" | ||
) | ||
|
||
func TestMsgAcknowledgementParseFail(t *testing.T) { | ||
t.Parallel() | ||
|
||
parsed, err := ParseMsgAcknowledgement([]byte("bytes"), &configTypes.Chain{Name: "chain"}, 100) | ||
require.Error(t, err) | ||
require.Nil(t, parsed) | ||
} | ||
|
||
func TestMsgAcknowledgementParsePacketFail(t *testing.T) { | ||
t.Parallel() | ||
|
||
packet := ibcChannelTypes.Packet{ | ||
SourceChannel: "src_channel", | ||
SourcePort: "src_port", | ||
DestinationChannel: "dst_channel", | ||
DestinationPort: "dst_port", | ||
Data: []byte("invalid"), | ||
} | ||
|
||
msg := &ibcChannelTypes.MsgAcknowledgement{ | ||
Signer: "signer", | ||
Packet: packet, | ||
} | ||
msgBytes, err := proto.Marshal(msg) | ||
require.NoError(t, err) | ||
|
||
parsed, err := ParseMsgAcknowledgement(msgBytes, &configTypes.Chain{Name: "chain"}, 100) | ||
require.Error(t, err) | ||
require.Nil(t, parsed) | ||
} | ||
|
||
func TestMsgAcknowledgementParseOk(t *testing.T) { | ||
t.Parallel() | ||
|
||
msgInternal := &ibcTypes.FungibleTokenPacketData{ | ||
Denom: "uatom", | ||
Amount: "100", | ||
Sender: "sender", | ||
Receiver: "receiver", | ||
Memo: "memo", | ||
} | ||
|
||
msgInternalBytes, err := ibcTypes.ModuleCdc.MarshalJSON(msgInternal) | ||
require.NoError(t, err) | ||
|
||
packet := ibcChannelTypes.Packet{ | ||
SourceChannel: "src_channel", | ||
SourcePort: "src_port", | ||
DestinationChannel: "dst_channel", | ||
DestinationPort: "dst_port", | ||
Data: msgInternalBytes, | ||
} | ||
|
||
msg := &ibcChannelTypes.MsgAcknowledgement{ | ||
Signer: "signer", | ||
Packet: packet, | ||
} | ||
msgBytes, err := proto.Marshal(msg) | ||
require.NoError(t, err) | ||
|
||
parsed, err := ParseMsgAcknowledgement(msgBytes, &configTypes.Chain{Name: "chain"}, 100) | ||
require.NoError(t, err) | ||
require.NotNil(t, parsed) | ||
} | ||
|
||
func TestMsgAcknowledgementBase(t *testing.T) { | ||
t.Parallel() | ||
|
||
msgInternal := &ibcTypes.FungibleTokenPacketData{ | ||
Denom: "uatom", | ||
Amount: "100", | ||
Sender: "sender", | ||
Receiver: "receiver", | ||
Memo: "memo", | ||
} | ||
|
||
msgInternalBytes, err := ibcTypes.ModuleCdc.MarshalJSON(msgInternal) | ||
require.NoError(t, err) | ||
|
||
packet := ibcChannelTypes.Packet{ | ||
SourceChannel: "src_channel", | ||
SourcePort: "src_port", | ||
DestinationChannel: "dst_channel", | ||
DestinationPort: "dst_port", | ||
Data: msgInternalBytes, | ||
} | ||
|
||
msg := &ibcChannelTypes.MsgAcknowledgement{ | ||
Signer: "signer", | ||
Packet: packet, | ||
} | ||
msgBytes, err := proto.Marshal(msg) | ||
require.NoError(t, err) | ||
|
||
parsed, err := ParseMsgAcknowledgement(msgBytes, &configTypes.Chain{Name: "chain"}, 100) | ||
require.NoError(t, err) | ||
require.NotNil(t, parsed) | ||
|
||
require.Equal(t, "/ibc.core.channel.v1.MsgAcknowledgement", parsed.Type()) | ||
|
||
values := parsed.GetValues() | ||
|
||
require.Equal(t, event.EventValues{ | ||
event.From(cosmosTypes.EventTypeMessage, cosmosTypes.AttributeKeyAction, "/ibc.core.channel.v1.MsgAcknowledgement"), | ||
event.From(cosmosTypes.EventTypeMessage, cosmosTypes.AttributeKeySender, "signer"), | ||
}, values) | ||
|
||
parsed.AddParsedMessage(nil) | ||
parsed.SetParsedMessages([]types.Message{}) | ||
require.Empty(t, parsed.GetParsedMessages()) | ||
require.Empty(t, parsed.GetRawMessages()) | ||
} | ||
|
||
func TestMsgAcknowledgementPopulate(t *testing.T) { | ||
t.Parallel() | ||
|
||
config := &configPkg.AppConfig{ | ||
Chains: configTypes.Chains{ | ||
{ | ||
Name: "chain", | ||
ChainID: "chain-id", | ||
Denoms: configTypes.DenomInfos{ | ||
{Denom: "uatom", DisplayDenom: "atom", DenomExponent: 6, CoingeckoCurrency: "cosmos"}, | ||
}, | ||
}, | ||
}, | ||
Metrics: configPkg.MetricsConfig{Enabled: false}, | ||
AliasesPath: "path.toml", | ||
} | ||
|
||
msgInternal := &ibcTypes.FungibleTokenPacketData{ | ||
Denom: "uatom", | ||
Amount: "100", | ||
Sender: "sender", | ||
Receiver: "receiver", | ||
Memo: "memo", | ||
} | ||
|
||
msgInternalBytes, err := ibcTypes.ModuleCdc.MarshalJSON(msgInternal) | ||
require.NoError(t, err) | ||
|
||
packet := ibcChannelTypes.Packet{ | ||
SourceChannel: "src_channel", | ||
SourcePort: "src_port", | ||
DestinationChannel: "dst_channel", | ||
DestinationPort: "dst_port", | ||
Data: msgInternalBytes, | ||
} | ||
|
||
msg := &ibcChannelTypes.MsgAcknowledgement{ | ||
Signer: "signer", | ||
Packet: packet, | ||
} | ||
msgBytes, err := proto.Marshal(msg) | ||
require.NoError(t, err) | ||
|
||
parsed, err := ParseMsgAcknowledgement(msgBytes, &configTypes.Chain{Name: "chain"}, 100) | ||
require.NoError(t, err) | ||
require.NotNil(t, parsed) | ||
|
||
filesystem := &fs.MockFs{} | ||
logger := loggerPkg.GetNopLogger() | ||
aliasManager := aliasManagerPkg.NewAliasManager(logger, config, filesystem) | ||
metricsManager := metrics.NewManager(logger, config.Metrics) | ||
dataFetcher := data_fetcher.NewDataFetcher(logger, config, aliasManager, metricsManager) | ||
|
||
err = aliasManager.Set("subscription", "chain", "sender", "sender_alias") | ||
require.NoError(t, err) | ||
err = aliasManager.Set("subscription", "chain", "signer", "signer_alias") | ||
require.NoError(t, err) | ||
err = aliasManager.Set("subscription", "chain", "receiver", "receiver_alias") | ||
require.NoError(t, err) | ||
|
||
parsed.GetAdditionalData(dataFetcher, "subscription") | ||
|
||
message, ok := parsed.(*MsgAcknowledgement) | ||
require.True(t, ok) | ||
require.Equal(t, "sender_alias", message.Sender.Title) | ||
require.Equal(t, "signer_alias", message.Signer.Title) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
package messages | ||
|
||
import ( | ||
"fmt" | ||
aliasManagerPkg "main/pkg/alias_manager" | ||
configPkg "main/pkg/config" | ||
configTypes "main/pkg/config/types" | ||
"main/pkg/data_fetcher" | ||
"main/pkg/fs" | ||
loggerPkg "main/pkg/logger" | ||
"main/pkg/metrics" | ||
"main/pkg/types" | ||
"main/pkg/types/event" | ||
"main/pkg/types/responses" | ||
"testing" | ||
|
||
cosmosStakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" | ||
|
||
cosmosTypes "github.com/cosmos/cosmos-sdk/types" | ||
"github.com/gogo/protobuf/proto" | ||
"github.com/stretchr/testify/require" | ||
) | ||
|
||
func TestMsgBeginRedelegateParse(t *testing.T) { | ||
t.Parallel() | ||
|
||
msg := &cosmosStakingTypes.MsgBeginRedelegate{ | ||
DelegatorAddress: "delegator", | ||
ValidatorSrcAddress: "validator_src", | ||
ValidatorDstAddress: "validator_dst", | ||
Amount: cosmosTypes.Coin{Amount: cosmosTypes.NewInt(100), Denom: "ustake"}, | ||
} | ||
msgBytes, err := proto.Marshal(msg) | ||
require.NoError(t, err) | ||
|
||
parsed, err := ParseMsgBeginRedelegate(msgBytes, &configTypes.Chain{Name: "chain"}, 100) | ||
require.NoError(t, err) | ||
require.NotNil(t, parsed) | ||
|
||
parsed2, err2 := ParseMsgBeginRedelegate([]byte("aaa"), &configTypes.Chain{Name: "chain"}, 100) | ||
require.Error(t, err2) | ||
require.Nil(t, parsed2) | ||
} | ||
|
||
func TestMsgBeginRedelegateBase(t *testing.T) { | ||
t.Parallel() | ||
|
||
msg := &cosmosStakingTypes.MsgBeginRedelegate{ | ||
DelegatorAddress: "delegator", | ||
ValidatorSrcAddress: "validator_src", | ||
ValidatorDstAddress: "validator_dst", | ||
Amount: cosmosTypes.Coin{Amount: cosmosTypes.NewInt(100), Denom: "ustake"}, | ||
} | ||
msgBytes, err := proto.Marshal(msg) | ||
require.NoError(t, err) | ||
|
||
parsed, err := ParseMsgBeginRedelegate(msgBytes, &configTypes.Chain{Name: "chain"}, 100) | ||
require.NoError(t, err) | ||
require.NotNil(t, parsed) | ||
|
||
require.Equal(t, "/cosmos.staking.v1beta1.MsgBeginRedelegate", parsed.Type()) | ||
|
||
values := parsed.GetValues() | ||
|
||
require.Equal(t, event.EventValues{ | ||
event.From(cosmosTypes.EventTypeMessage, cosmosTypes.AttributeKeyAction, "/cosmos.staking.v1beta1.MsgBeginRedelegate"), | ||
event.From(cosmosTypes.EventTypeMessage, cosmosTypes.AttributeKeySender, "delegator"), | ||
event.From(cosmosStakingTypes.EventTypeRedelegate, cosmosStakingTypes.AttributeKeySrcValidator, "validator_src"), | ||
event.From(cosmosStakingTypes.EventTypeRedelegate, cosmosStakingTypes.AttributeKeyDstValidator, "validator_dst"), | ||
event.From(cosmosStakingTypes.EventTypeRedelegate, cosmosStakingTypes.AttributeKeyDelegator, "delegator"), | ||
event.From(cosmosStakingTypes.EventTypeRedelegate, cosmosTypes.AttributeKeyAmount, "100ustake"), | ||
}, values) | ||
|
||
parsed.AddParsedMessage(nil) | ||
parsed.SetParsedMessages([]types.Message{}) | ||
require.Empty(t, parsed.GetParsedMessages()) | ||
require.Empty(t, parsed.GetRawMessages()) | ||
} | ||
|
||
func TestMsgBeginRedelegatePopulate(t *testing.T) { | ||
t.Parallel() | ||
|
||
msg := &cosmosStakingTypes.MsgBeginRedelegate{ | ||
DelegatorAddress: "delegator", | ||
ValidatorSrcAddress: "validator_src", | ||
ValidatorDstAddress: "validator_dst", | ||
Amount: cosmosTypes.Coin{Amount: cosmosTypes.NewInt(100000000), Denom: "uatom"}, | ||
} | ||
msgBytes, err := proto.Marshal(msg) | ||
require.NoError(t, err) | ||
|
||
config := &configPkg.AppConfig{ | ||
Chains: configTypes.Chains{ | ||
{ | ||
Name: "chain", | ||
ChainID: "chain-id", | ||
Denoms: configTypes.DenomInfos{ | ||
{Denom: "uatom", DisplayDenom: "atom", DenomExponent: 6, CoingeckoCurrency: "cosmos"}, | ||
}, | ||
}, | ||
}, | ||
Metrics: configPkg.MetricsConfig{Enabled: false}, | ||
AliasesPath: "path.toml", | ||
} | ||
|
||
parsed, err := ParseMsgBeginRedelegate(msgBytes, config.Chains[0], 100) | ||
require.NoError(t, err) | ||
require.NotNil(t, parsed) | ||
|
||
filesystem := &fs.MockFs{} | ||
logger := loggerPkg.GetNopLogger() | ||
aliasManager := aliasManagerPkg.NewAliasManager(logger, config, filesystem) | ||
metricsManager := metrics.NewManager(logger, config.Metrics) | ||
dataFetcher := data_fetcher.NewDataFetcher(logger, config, aliasManager, metricsManager) | ||
|
||
err = aliasManager.Set("subscription", "chain", "delegator", "delegator_alias") | ||
require.NoError(t, err) | ||
|
||
dataFetcher.Cache.Set("chain-id_price_uatom", 6.7) | ||
dataFetcher.Cache.Set("chain_validator_validator_src", &responses.Validator{ | ||
OperatorAddress: "test", | ||
Description: responses.ValidatorDescription{Moniker: "Src Validator Moniker"}, | ||
}) | ||
dataFetcher.Cache.Set("chain_validator_validator_dst", &responses.Validator{ | ||
OperatorAddress: "test", | ||
Description: responses.ValidatorDescription{Moniker: "Dst Validator Moniker"}, | ||
}) | ||
|
||
parsed.GetAdditionalData(dataFetcher, "subscription") | ||
|
||
msgDelegate, _ := parsed.(*MsgBeginRedelegate) | ||
|
||
require.Equal(t, "delegator_alias", msgDelegate.DelegatorAddress.Title) | ||
require.Equal(t, "Src Validator Moniker", msgDelegate.ValidatorSrcAddress.Title) | ||
require.Equal(t, "Dst Validator Moniker", msgDelegate.ValidatorDstAddress.Title) | ||
require.Equal(t, "100.00", fmt.Sprintf("%.2f", msgDelegate.Amount.Value)) | ||
require.Equal(t, "670.00", fmt.Sprintf("%.2f", msgDelegate.Amount.PriceUSD)) | ||
require.Equal(t, "atom", msgDelegate.Amount.Denom.String()) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.