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 }