github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/node/registration/powchain_test.go (about)

     1  package registration
     2  
     3  import (
     4  	"flag"
     5  	"testing"
     6  
     7  	"github.com/prysmaticlabs/prysm/cmd/beacon-chain/flags"
     8  	"github.com/prysmaticlabs/prysm/shared/params"
     9  	"github.com/prysmaticlabs/prysm/shared/testutil/assert"
    10  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
    11  	logTest "github.com/sirupsen/logrus/hooks/test"
    12  	"github.com/urfave/cli/v2"
    13  )
    14  
    15  func TestPowchainPreregistration(t *testing.T) {
    16  	app := cli.App{}
    17  	set := flag.NewFlagSet("test", 0)
    18  	set.String(flags.HTTPWeb3ProviderFlag.Name, "primary", "")
    19  	fallback := cli.StringSlice{}
    20  	err := fallback.Set("fallback1")
    21  	require.NoError(t, err)
    22  	err = fallback.Set("fallback2")
    23  	require.NoError(t, err)
    24  	set.Var(&fallback, flags.FallbackWeb3ProviderFlag.Name, "")
    25  	ctx := cli.NewContext(&app, set, nil)
    26  
    27  	address, endpoints, err := PowchainPreregistration(ctx)
    28  	require.NoError(t, err)
    29  	assert.Equal(t, params.BeaconConfig().DepositContractAddress, address)
    30  	assert.DeepEqual(t, []string{"primary", "fallback1", "fallback2"}, endpoints)
    31  }
    32  
    33  func TestPowchainPreregistration_EmptyWeb3Provider(t *testing.T) {
    34  	hook := logTest.NewGlobal()
    35  	app := cli.App{}
    36  	set := flag.NewFlagSet("test", 0)
    37  	set.String(flags.HTTPWeb3ProviderFlag.Name, "", "")
    38  	fallback := cli.StringSlice{}
    39  	set.Var(&fallback, flags.FallbackWeb3ProviderFlag.Name, "")
    40  	ctx := cli.NewContext(&app, set, nil)
    41  
    42  	_, _, err := PowchainPreregistration(ctx)
    43  	require.NoError(t, err)
    44  	assert.LogsContain(t, hook, "No ETH1 node specified to run with the beacon node")
    45  }
    46  
    47  func TestDepositContractAddress_Ok(t *testing.T) {
    48  	address, err := DepositContractAddress()
    49  	require.NoError(t, err)
    50  	assert.Equal(t, params.BeaconConfig().DepositContractAddress, address)
    51  }
    52  
    53  func TestDepositContractAddress_EmptyAddress(t *testing.T) {
    54  	params.SetupTestConfigCleanup(t)
    55  	config := params.BeaconConfig()
    56  	config.DepositContractAddress = ""
    57  	params.OverrideBeaconConfig(config)
    58  
    59  	_, err := DepositContractAddress()
    60  	assert.ErrorContains(t, "valid deposit contract is required", err)
    61  }
    62  
    63  func TestDepositContractAddress_NotHexAddress(t *testing.T) {
    64  	params.SetupTestConfigCleanup(t)
    65  	config := params.BeaconConfig()
    66  	config.DepositContractAddress = "abc?!"
    67  	params.OverrideBeaconConfig(config)
    68  
    69  	_, err := DepositContractAddress()
    70  	assert.ErrorContains(t, "invalid deposit contract address given", err)
    71  }