mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-03 09:51:39 +00:00
@@ -0,0 +1,136 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"cosmossdk.io/math"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/sonr-io/sonr/test/e2e/utils"
|
||||
)
|
||||
|
||||
func TestBasicChain(t *testing.T) {
|
||||
cfg := utils.NewTestConfig()
|
||||
ctx := context.Background()
|
||||
|
||||
t.Run("node_info", func(t *testing.T) {
|
||||
utils.AssertNodeInfo(t, cfg, cfg.ChainID)
|
||||
})
|
||||
|
||||
t.Run("validate_pre_funded_accounts", func(t *testing.T) {
|
||||
// Check pre-funded accounts from localnet
|
||||
acc0Addr := "idx1fcqk3crpnyvyhtd4jepsnx5eat5ehc920epq29"
|
||||
acc1Addr := "idx10n78mn09nx0f056wam35wkfvanf37kepuj28x4"
|
||||
|
||||
// Verify acc0 has balance
|
||||
balance0, err := cfg.Client.GetBalance(ctx, acc0Addr, cfg.StakingDenom)
|
||||
require.NoError(t, err, "failed to query acc0 balance")
|
||||
require.True(t, balance0.GT(math.ZeroInt()), "acc0 should have balance")
|
||||
|
||||
// Verify acc1 has balance
|
||||
balance1, err := cfg.Client.GetBalance(ctx, acc1Addr, cfg.StakingDenom)
|
||||
require.NoError(t, err, "failed to query acc1 balance")
|
||||
require.True(t, balance1.GT(math.ZeroInt()), "acc1 should have balance")
|
||||
})
|
||||
|
||||
t.Run("bank_params", func(t *testing.T) {
|
||||
bankParams, err := cfg.Client.GetBankParams(ctx)
|
||||
require.NoError(t, err, "failed to query bank params")
|
||||
require.NotNil(t, bankParams, "bank params should not be nil")
|
||||
})
|
||||
|
||||
t.Run("supply_queries", func(t *testing.T) {
|
||||
// Query total supply of test denom
|
||||
testSupply, err := cfg.Client.GetSupply(ctx, "test")
|
||||
require.NoError(t, err, "failed to query test supply")
|
||||
require.True(t, testSupply.GT(math.ZeroInt()), "test supply should be greater than zero")
|
||||
|
||||
// Query total supply of staking denom
|
||||
stakingSupply, err := cfg.Client.GetSupply(ctx, cfg.StakingDenom)
|
||||
require.NoError(t, err, "failed to query staking supply")
|
||||
require.True(t, stakingSupply.GT(math.ZeroInt()), "staking supply should be greater than zero")
|
||||
})
|
||||
|
||||
t.Run("balance_operations", func(t *testing.T) {
|
||||
// Use pre-funded account from localnet
|
||||
testAddr := "idx1fcqk3crpnyvyhtd4jepsnx5eat5ehc920epq29"
|
||||
|
||||
// Get all balances
|
||||
balances, err := cfg.Client.GetAllBalances(ctx, testAddr)
|
||||
require.NoError(t, err, "failed to query all balances")
|
||||
require.NotEmpty(t, balances, "user should have at least one balance")
|
||||
|
||||
// Check specific balance for staking denom
|
||||
balance, err := cfg.Client.GetBalance(ctx, testAddr, cfg.StakingDenom)
|
||||
require.NoError(t, err, "failed to query specific balance")
|
||||
require.True(t, balance.GT(math.ZeroInt()), "balance should be greater than zero")
|
||||
})
|
||||
}
|
||||
|
||||
func TestFaucetOperations(t *testing.T) {
|
||||
t.Skip("Skipping faucet tests - localnet doesn't have a faucet")
|
||||
cfg := utils.NewTestConfig()
|
||||
ctx := context.Background()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
fundAmount math.Int
|
||||
expectError bool
|
||||
}{
|
||||
{
|
||||
name: "normal_funding",
|
||||
fundAmount: math.NewInt(1_000_000),
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "large_funding",
|
||||
fundAmount: math.NewInt(100_000_000),
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "zero_funding",
|
||||
fundAmount: math.ZeroInt(),
|
||||
expectError: false, // Faucet should handle this gracefully
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
users := utils.GetDefaultTestUsers(tt.fundAmount, cfg.NormalDenom)
|
||||
testUser := users[0]
|
||||
|
||||
err := cfg.FaucetClient.FundTestUsers(ctx, []utils.CreateTestUser{testUser})
|
||||
if tt.expectError {
|
||||
require.Error(t, err, "expected funding to fail")
|
||||
} else {
|
||||
require.NoError(t, err, "funding should succeed")
|
||||
|
||||
// Wait for transaction to be included
|
||||
err = utils.WaitForBlocks(ctx, cfg, 2)
|
||||
require.NoError(t, err, "failed to wait for blocks")
|
||||
|
||||
// Verify balance if funding was expected to succeed
|
||||
if !tt.fundAmount.IsZero() {
|
||||
utils.AssertBalance(t, cfg, testUser.Address, testUser.Denom, testUser.Amount)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestChainConnectivity(t *testing.T) {
|
||||
cfg := utils.NewTestConfig()
|
||||
ctx := context.Background()
|
||||
|
||||
t.Run("rest_api_connectivity", func(t *testing.T) {
|
||||
// Test REST API connectivity by querying node info
|
||||
nodeInfo, err := cfg.Client.GetNodeInfo(ctx)
|
||||
require.NoError(t, err, "REST API should be accessible")
|
||||
require.Equal(t, cfg.ChainID, nodeInfo.DefaultNodeInfo.Network, "chain ID should match")
|
||||
})
|
||||
|
||||
t.Run("faucet_connectivity", func(t *testing.T) {
|
||||
t.Skip("Skipping faucet connectivity test - localnet doesn't have a faucet")
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user