* clear

* feat: Add everything

* fix: Commenht
This commit is contained in:
Prad Nukala
2025-10-03 14:45:52 -04:00
committed by GitHub
parent 43b4a11c06
commit 13e6c3e84d
1935 changed files with 655061 additions and 40058 deletions
+165
View File
@@ -0,0 +1,165 @@
package ibc
import (
"context"
"testing"
"cosmossdk.io/math"
transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types"
"github.com/stretchr/testify/require"
"github.com/sonr-io/sonr/test/e2e/utils"
)
func TestIBCBasic(t *testing.T) {
t.Skip("Skipping IBC tests - localnet doesn't have IBC channels")
cfg := utils.NewTestConfig()
ctx := context.Background()
t.Run("ibc_channel_exists", func(t *testing.T) {
// Verify that IBC transfer channels exist
channelID := utils.AssertTransferChannelExists(t, cfg)
require.NotEmpty(t, channelID, "transfer channel should exist")
})
t.Run("ibc_channels_query", func(t *testing.T) {
// Query all IBC channels
channels, err := cfg.Client.GetChannels(ctx)
require.NoError(t, err, "failed to query IBC channels")
require.NotEmpty(t, channels.Channels, "should have at least one IBC channel")
// Verify we have transfer channels
hasTransferChannel := false
for _, channel := range channels.Channels {
if channel.PortID == "transfer" {
hasTransferChannel = true
require.Equal(t, "STATE_OPEN", channel.State, "transfer channel should be open")
break
}
}
require.True(t, hasTransferChannel, "should have at least one transfer channel")
})
t.Run("ibc_channel_details", func(t *testing.T) {
// Get transfer channel ID
channelID, err := cfg.Client.GetTransferChannel(ctx)
require.NoError(t, err, "failed to get transfer channel")
// Query specific channel details
channel, err := cfg.Client.GetChannel(ctx, "transfer", channelID)
require.NoError(t, err, "failed to query channel details")
require.NotNil(t, channel, "channel response should not be nil")
require.Equal(t, "STATE_OPEN", channel.Channel.State.String(), "channel should be open")
})
}
func TestIBCDenomTrace(t *testing.T) {
t.Skip("Skipping IBC tests - localnet doesn't have IBC channels")
cfg := utils.NewTestConfig()
ctx := context.Background()
t.Run("denom_trace_generation", func(t *testing.T) {
// Get transfer channel for testing
channelID, err := cfg.Client.GetTransferChannel(ctx)
require.NoError(t, err, "failed to get transfer channel")
// Generate IBC denom trace for testing
denomTrace := transfertypes.ParseDenomTrace(
transfertypes.GetPrefixedDenom("transfer", channelID, cfg.NormalDenom),
)
ibcDenom := denomTrace.IBCDenom()
require.NotEmpty(t, ibcDenom, "IBC denom should not be empty")
require.Contains(t, ibcDenom, "ibc/", "IBC denom should have ibc/ prefix")
})
}
// TestIBCTransferSimulation tests IBC transfer logic without actual multi-chain setup
func TestIBCTransferSimulation(t *testing.T) {
t.Skip("Skipping IBC tests - localnet doesn't have IBC channels")
cfg := utils.NewTestConfig()
ctx := context.Background()
tests := []struct {
name string
transferAmount math.Int
expectError bool
}{
{
name: "normal_transfer_amount",
transferAmount: math.NewInt(1_000_000), // 1 SNR
expectError: false,
},
{
name: "large_transfer_amount",
transferAmount: math.NewInt(50_000_000), // 50 SNR
expectError: false,
},
{
name: "zero_transfer_amount",
transferAmount: math.ZeroInt(),
expectError: true, // Should fail validation
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Setup test user with sufficient funds
fundAmount := math.NewInt(100_000_000) // 100 SNR
users := utils.SetupTestUsers(t, cfg, fundAmount)
sourceUser := users[0]
// Verify user has sufficient balance before transfer
if !tt.expectError && tt.transferAmount.GT(math.ZeroInt()) {
utils.AssertBalanceGreaterThan(t, cfg, sourceUser.Address, sourceUser.Denom, tt.transferAmount)
}
// Get transfer channel
channelID, err := cfg.Client.GetTransferChannel(ctx)
require.NoError(t, err, "failed to get transfer channel")
// Create IBC denom for destination
denomTrace := transfertypes.ParseDenomTrace(
transfertypes.GetPrefixedDenom("transfer", channelID, cfg.NormalDenom),
)
ibcDenom := denomTrace.IBCDenom()
// Validate transfer parameters
if tt.expectError {
require.True(t, tt.transferAmount.IsZero() || tt.transferAmount.IsNegative(),
"invalid transfer amounts should be caught")
} else {
require.True(t, tt.transferAmount.GT(math.ZeroInt()),
"valid transfer amounts should be positive")
require.NotEmpty(t, ibcDenom, "IBC denom should be generated")
}
})
}
}
func TestIBCConnectionStatus(t *testing.T) {
cfg := utils.NewTestConfig()
ctx := context.Background()
t.Run("connection_existence", func(t *testing.T) {
// Query channels to find connection information
channels, err := cfg.Client.GetChannels(ctx)
require.NoError(t, err, "failed to query channels")
if len(channels.Channels) > 0 {
// Test connection details for first channel
channel := channels.Channels[0]
require.NotEmpty(t, channel.ConnectionHops, "channel should have connection hops")
if len(channel.ConnectionHops) > 0 {
connectionID := channel.ConnectionHops[0]
// Query connection details
connection, err := cfg.Client.GetConnection(ctx, connectionID)
require.NoError(t, err, "failed to query connection")
require.NotNil(t, connection, "connection should exist")
require.Equal(t, "STATE_OPEN", connection.Connection.State, "connection should be open")
}
}
})
}