Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
249 lines
6.3 KiB
Go
249 lines
6.3 KiB
Go
package v1_test
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/ignite/cli/v29/ignite/config/chain/base"
|
|
"github.com/ignite/cli/v29/ignite/config/chain/defaults"
|
|
v1 "github.com/ignite/cli/v29/ignite/config/chain/v1"
|
|
"github.com/ignite/cli/v29/ignite/pkg/xnet"
|
|
)
|
|
|
|
func TestConfigDecode(t *testing.T) {
|
|
assert := assert.New(t)
|
|
require := require.New(t)
|
|
f, err := os.Open("testdata/config2.yaml")
|
|
require.NoError(err)
|
|
defer f.Close()
|
|
var cfg v1.Config
|
|
|
|
err = cfg.Decode(f)
|
|
|
|
require.NoError(err)
|
|
expected := v1.Config{
|
|
Config: base.Config{
|
|
Version: 1,
|
|
Build: base.Build{
|
|
Binary: "evmosd",
|
|
Proto: base.Proto{
|
|
Path: "proto",
|
|
},
|
|
},
|
|
Accounts: []base.Account{
|
|
{
|
|
Name: "alice",
|
|
Coins: []string{"100000000uatom", "100000000000000000000aevmos"},
|
|
Mnemonic: "ozone unfold device pave lemon potato omit insect column wise cover hint narrow large provide kidney episode clay notable milk mention dizzy muffin crazy",
|
|
},
|
|
{
|
|
Name: "bob",
|
|
Coins: []string{"5000000000000aevmos"},
|
|
Address: "cosmos1adn9gxjmrc3hrsdx5zpc9sj2ra7kgqkmphf8yw",
|
|
},
|
|
},
|
|
Faucet: base.Faucet{
|
|
Name: &[]string{"bob"}[0],
|
|
Coins: []string{"10aevmos"},
|
|
Host: "0.0.0.0:4600",
|
|
Port: 4600,
|
|
},
|
|
Genesis: map[string]any{
|
|
"app_state": map[string]any{
|
|
"crisis": map[string]any{
|
|
"constant_fee": map[string]any{
|
|
"denom": "aevmos",
|
|
},
|
|
},
|
|
},
|
|
"chain_id": "evmosd_9000-1",
|
|
},
|
|
},
|
|
Validators: []v1.Validator{{
|
|
Name: "alice",
|
|
Bonded: "100000000000000000000aevmos",
|
|
Home: "$HOME/.evmosd",
|
|
App: map[string]any{
|
|
"evm-rpc": map[string]any{
|
|
"address": "0.0.0.0:8545",
|
|
"ws-address": "0.0.0.0:8546",
|
|
},
|
|
},
|
|
}},
|
|
}
|
|
assert.Equal(expected, cfg)
|
|
}
|
|
|
|
func TestConfigValidatorDefaultServers(t *testing.T) {
|
|
// Arrange
|
|
c := v1.Config{
|
|
Validators: []v1.Validator{
|
|
{
|
|
Name: "name-1",
|
|
Bonded: "100ATOM",
|
|
},
|
|
},
|
|
}
|
|
servers := v1.Servers{}
|
|
|
|
// Act
|
|
err := c.SetDefaults()
|
|
if err == nil {
|
|
servers, err = c.Validators[0].GetServers()
|
|
}
|
|
|
|
// Assert
|
|
require.NoError(t, err)
|
|
|
|
// Assert
|
|
require.Equal(t, defaults.GRPCAddress, servers.GRPC.Address)
|
|
require.Equal(t, defaults.GRPCWebAddress, servers.GRPCWeb.Address)
|
|
require.Equal(t, defaults.APIAddress, servers.API.Address)
|
|
require.Equal(t, defaults.RPCAddress, servers.RPC.Address)
|
|
require.Equal(t, defaults.P2PAddress, servers.P2P.Address)
|
|
require.Equal(t, defaults.PProfAddress, servers.RPC.PProfAddress)
|
|
}
|
|
|
|
func TestConfigValidatorWithExistingServers(t *testing.T) {
|
|
// Arrange
|
|
rpcAddr := "127.0.0.1:1234"
|
|
apiAddr := "127.0.0.1:4321"
|
|
c := v1.Config{
|
|
Validators: []v1.Validator{
|
|
{
|
|
Name: "name-1",
|
|
Bonded: "100ATOM",
|
|
App: map[string]interface{}{
|
|
// This value should not be overwritten with the default address
|
|
"api": map[string]interface{}{"address": apiAddr},
|
|
},
|
|
Config: map[string]interface{}{
|
|
// This value should not be overwritten with the default address
|
|
"rpc": map[string]interface{}{"laddr": rpcAddr},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
servers := v1.Servers{}
|
|
|
|
// Act
|
|
err := c.SetDefaults()
|
|
if err == nil {
|
|
servers, err = c.Validators[0].GetServers()
|
|
}
|
|
|
|
// Assert
|
|
require.NoError(t, err)
|
|
|
|
// Assert
|
|
require.Equal(t, rpcAddr, servers.RPC.Address)
|
|
require.Equal(t, apiAddr, servers.API.Address)
|
|
require.Equal(t, defaults.GRPCAddress, servers.GRPC.Address)
|
|
require.Equal(t, defaults.GRPCWebAddress, servers.GRPCWeb.Address)
|
|
require.Equal(t, defaults.P2PAddress, servers.P2P.Address)
|
|
require.Equal(t, defaults.PProfAddress, servers.RPC.PProfAddress)
|
|
}
|
|
|
|
func TestConfigValidatorsWithExistingServers(t *testing.T) {
|
|
// Arrange
|
|
inc := uint64(10)
|
|
rpcAddr := "127.0.0.1:1234"
|
|
apiAddr := "127.0.0.1:4321"
|
|
c := v1.Config{
|
|
Validators: []v1.Validator{
|
|
{
|
|
Name: "name-1",
|
|
Bonded: "100ATOM",
|
|
},
|
|
{
|
|
Name: "name-2",
|
|
Bonded: "200ATOM",
|
|
App: map[string]interface{}{
|
|
// This value should not be overwritten with the default address
|
|
"api": map[string]interface{}{"address": apiAddr},
|
|
},
|
|
Config: map[string]interface{}{
|
|
// This value should not be overwritten with the default address
|
|
"rpc": map[string]interface{}{"laddr": rpcAddr},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
servers := v1.Servers{}
|
|
|
|
// Act
|
|
err := c.SetDefaults()
|
|
if err == nil {
|
|
servers, err = c.Validators[1].GetServers()
|
|
}
|
|
|
|
// Assert
|
|
require.NoError(t, err)
|
|
|
|
// Assert: The existing addresses should not be changed
|
|
require.Equal(t, rpcAddr, servers.RPC.Address)
|
|
require.Equal(t, apiAddr, servers.API.Address)
|
|
|
|
// Assert: The second validator should have the ports incremented by 10
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.GRPCAddress, inc), servers.GRPC.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.GRPCWebAddress, inc), servers.GRPCWeb.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.P2PAddress, inc), servers.P2P.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.PProfAddress, inc), servers.RPC.PProfAddress)
|
|
}
|
|
|
|
func TestConfigValidatorsDefaultServers(t *testing.T) {
|
|
// Arrange
|
|
inc := uint64(10)
|
|
c := v1.Config{
|
|
Validators: []v1.Validator{
|
|
{
|
|
Name: "name-1",
|
|
Bonded: "100ATOM",
|
|
},
|
|
{
|
|
Name: "name-2",
|
|
Bonded: "200ATOM",
|
|
},
|
|
},
|
|
}
|
|
servers := v1.Servers{}
|
|
|
|
// Act
|
|
err := c.SetDefaults()
|
|
if err == nil {
|
|
servers, err = c.Validators[1].GetServers()
|
|
}
|
|
|
|
// Assert
|
|
require.NoError(t, err)
|
|
|
|
// Assert: The second validator should have the ports incremented by 10
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.GRPCAddress, inc), servers.GRPC.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.GRPCWebAddress, inc), servers.GRPCWeb.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.APIAddress, inc), servers.API.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.RPCAddress, inc), servers.RPC.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.P2PAddress, inc), servers.P2P.Address)
|
|
require.Equal(t, xnet.MustIncreasePortBy(defaults.PProfAddress, inc), servers.RPC.PProfAddress)
|
|
}
|
|
|
|
func TestClone(t *testing.T) {
|
|
// Arrange
|
|
c := &v1.Config{
|
|
Validators: []v1.Validator{
|
|
{
|
|
Name: "alice",
|
|
Bonded: "100000000stake",
|
|
},
|
|
},
|
|
}
|
|
|
|
// Act
|
|
c2, err := c.Clone()
|
|
|
|
// Assert
|
|
require.NoError(t, err)
|
|
require.Equal(t, c, c2)
|
|
}
|