package account_test import ( "bytes" "strings" "testing" "github.com/stretchr/testify/require" "github.com/ignite/cli/v29/ignite/pkg/cmdrunner/step" "github.com/ignite/cli/v29/ignite/pkg/randstr" envtest "github.com/ignite/cli/v29/integration" ) const testAccountMnemonic = "develop mansion drum glow husband trophy labor jelly fault run pause inside jazz foil page injury foam oppose fruit chunk segment morning series nation" func TestAccount(t *testing.T) { var ( env = envtest.New(t) tmpDir = t.TempDir() accountName = randstr.Runes(10) ) env.Must(env.Exec("create account", step.NewSteps(step.New( step.Exec(envtest.IgniteApp, "account", "create", accountName, "--keyring-dir", tmpDir), )), )) listOutputBuffer := &bytes.Buffer{} env.Must(env.Exec("list accounts", step.NewSteps(step.New( step.Exec(envtest.IgniteApp, "account", "list", "--keyring-dir", tmpDir), )), envtest.ExecStdout(listOutputBuffer), )) require.True(t, strings.Contains(listOutputBuffer.String(), accountName)) env.Must(env.Exec("delete account", step.NewSteps(step.New( step.Exec(envtest.IgniteApp, "account", "delete", accountName, "--keyring-dir", tmpDir), )), )) listOutputAfterDeleteBuffer := &bytes.Buffer{} env.Must(env.Exec("list accounts after delete", step.NewSteps(step.New( step.Exec(envtest.IgniteApp, "account", "list", "--keyring-dir", tmpDir), )), envtest.ExecStdout(listOutputAfterDeleteBuffer), )) require.Equal(t, "Name \tAddress Public Key \t\n\n", listOutputAfterDeleteBuffer.String()) env.Must(env.Exec("import account with mnemonic", step.NewSteps(step.New( step.Exec( envtest.IgniteApp, "account", "import", "testaccount42", "--keyring-dir", tmpDir, "--secret", testAccountMnemonic, ), )), )) env.Must(env.Exec("import account with private key", step.NewSteps(step.New( step.Exec( envtest.IgniteApp, "account", "import", "testaccount43", "--non-interactive", "--keyring-dir", tmpDir, "--secret", "testdata/key", "--passphrase", "passpass", ), )), )) listOutputAfterImportBuffer := &bytes.Buffer{} env.Must(env.Exec("list accounts after import", step.NewSteps(step.New( step.Exec(envtest.IgniteApp, "account", "list", "--keyring-dir", tmpDir), )), envtest.ExecStdout(listOutputAfterImportBuffer), )) require.Equal(t, `Name Address Public Key testaccount42 cosmos1ytnkpns7mfd6jjkvq9ztdvjdrt2xvmft2qxzqd PubKeySecp256k1{02FDF6D6F63B6B8E3CC71D03669BE0808F9990EE2A7FDBBF47E6BBEC4176E7763C} testaccount43 cosmos18p4xchk2aqp39nsjwr69ql44upzsfnh8r9lzql PubKeySecp256k1{0228B8FC609973D91BFF7A9933424F31E15A54B97F8FDF7CE5A83B4DC20988068F} `, listOutputAfterImportBuffer.String()) showOutputBuffer := &bytes.Buffer{} env.Must(env.Exec("show account", step.NewSteps(step.New( step.Exec(envtest.IgniteApp, "account", "show", "testaccount42", "--keyring-dir", tmpDir), )), envtest.ExecStdout(showOutputBuffer), )) require.Equal(t, `Name Address Public Key testaccount42 cosmos1ytnkpns7mfd6jjkvq9ztdvjdrt2xvmft2qxzqd PubKeySecp256k1{02FDF6D6F63B6B8E3CC71D03669BE0808F9990EE2A7FDBBF47E6BBEC4176E7763C} `, showOutputBuffer.String()) showOutputWithDifferentPrefixBuffer := &bytes.Buffer{} env.Must(env.Exec("show account with address prefix", step.NewSteps(step.New( step.Exec(envtest.IgniteApp, "account", "show", "testaccount42", "--keyring-dir", tmpDir, "--address-prefix", "test"), )), envtest.ExecStdout(showOutputWithDifferentPrefixBuffer), )) require.Equal(t, `Name Address Public Key testaccount42 test1ytnkpns7mfd6jjkvq9ztdvjdrt2xvmftxemuve PubKeySecp256k1{02FDF6D6F63B6B8E3CC71D03669BE0808F9990EE2A7FDBBF47E6BBEC4176E7763C} `, showOutputWithDifferentPrefixBuffer.String()) }