github.com/prysmaticlabs/prysm@v1.4.4/validator/accounts/wallet_edit_test.go (about)

     1  package accounts
     2  
     3  import (
     4  	"flag"
     5  	"testing"
     6  
     7  	"github.com/prysmaticlabs/prysm/cmd/validator/flags"
     8  	"github.com/prysmaticlabs/prysm/shared/testutil/assert"
     9  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
    10  	"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
    11  	"github.com/prysmaticlabs/prysm/validator/keymanager"
    12  	"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
    13  	"github.com/urfave/cli/v2"
    14  )
    15  
    16  func TestEditWalletConfiguration(t *testing.T) {
    17  	walletDir, _, passwordFile := setupWalletAndPasswordsDir(t)
    18  	cliCtx := setupWalletCtx(t, &testWalletConfig{
    19  		walletDir:      walletDir,
    20  		keymanagerKind: keymanager.Remote,
    21  	})
    22  	wallet, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
    23  		WalletCfg: &wallet.Config{
    24  			WalletDir:      walletDir,
    25  			KeymanagerKind: keymanager.Remote,
    26  			WalletPassword: "Passwordz0320$",
    27  		},
    28  	})
    29  	require.NoError(t, err)
    30  
    31  	originalCfg := &remote.KeymanagerOpts{
    32  		RemoteCertificate: &remote.CertificateConfig{
    33  			RequireTls:     true,
    34  			ClientCertPath: "/tmp/a.crt",
    35  			ClientKeyPath:  "/tmp/b.key",
    36  			CACertPath:     "/tmp/c.crt",
    37  		},
    38  		RemoteAddr: "my.server.com:4000",
    39  	}
    40  	encodedCfg, err := remote.MarshalOptionsFile(cliCtx.Context, originalCfg)
    41  	assert.NoError(t, err)
    42  	assert.NoError(t, wallet.WriteKeymanagerConfigToDisk(cliCtx.Context, encodedCfg))
    43  
    44  	wantCfg := &remote.KeymanagerOpts{
    45  		RemoteCertificate: &remote.CertificateConfig{
    46  			RequireTls:     true,
    47  			ClientCertPath: "/tmp/client.crt",
    48  			ClientKeyPath:  "/tmp/client.key",
    49  			CACertPath:     "/tmp/ca.crt",
    50  		},
    51  		RemoteAddr: "host.example.com:4000",
    52  	}
    53  	app := cli.App{}
    54  	set := flag.NewFlagSet("test", 0)
    55  	set.String(flags.WalletDirFlag.Name, walletDir, "")
    56  	set.String(flags.WalletPasswordFileFlag.Name, passwordFile, "")
    57  	set.String(flags.GrpcRemoteAddressFlag.Name, wantCfg.RemoteAddr, "")
    58  	set.String(flags.RemoteSignerCertPathFlag.Name, wantCfg.RemoteCertificate.ClientCertPath, "")
    59  	set.String(flags.RemoteSignerKeyPathFlag.Name, wantCfg.RemoteCertificate.ClientKeyPath, "")
    60  	set.String(flags.RemoteSignerCACertPathFlag.Name, wantCfg.RemoteCertificate.CACertPath, "")
    61  	assert.NoError(t, set.Set(flags.WalletDirFlag.Name, walletDir))
    62  	assert.NoError(t, set.Set(flags.WalletPasswordFileFlag.Name, passwordFile))
    63  	assert.NoError(t, set.Set(flags.GrpcRemoteAddressFlag.Name, wantCfg.RemoteAddr))
    64  	assert.NoError(t, set.Set(flags.RemoteSignerCertPathFlag.Name, wantCfg.RemoteCertificate.ClientCertPath))
    65  	assert.NoError(t, set.Set(flags.RemoteSignerKeyPathFlag.Name, wantCfg.RemoteCertificate.ClientKeyPath))
    66  	assert.NoError(t, set.Set(flags.RemoteSignerCACertPathFlag.Name, wantCfg.RemoteCertificate.CACertPath))
    67  	cliCtx = cli.NewContext(&app, set, nil)
    68  
    69  	err = EditWalletConfigurationCli(cliCtx)
    70  	require.NoError(t, err)
    71  	encoded, err := wallet.ReadKeymanagerConfigFromDisk(cliCtx.Context)
    72  	require.NoError(t, err)
    73  
    74  	cfg, err := remote.UnmarshalOptionsFile(encoded)
    75  	assert.NoError(t, err)
    76  	assert.DeepEqual(t, wantCfg, cfg)
    77  }