OSDN Git Service

improve account manager DeleteAccount parameter
authorYongfeng LI <wliyongfeng@gmail.com>
Mon, 16 Apr 2018 06:13:49 +0000 (14:13 +0800)
committerYongfeng LI <wliyongfeng@gmail.com>
Tue, 17 Apr 2018 05:33:44 +0000 (13:33 +0800)
account/accounts.go
account/accounts_test.go
api/accounts.go
wallet/wallet.go
wallet/wallet_test.go

index ef1982c..84925d0 100644 (file)
@@ -390,13 +390,16 @@ func (m *Manager) GetCoinbaseControlProgram() ([]byte, error) {
        return program.ControlProgram, nil
 }
 
-// DeleteAccount deletes the account's ID or alias matching accountInfo.
-func (m *Manager) DeleteAccount(in struct {
+// AccountInfo
+type Info struct {
        AccountInfo string `json:"account_info"`
-}) (err error) {
+}
+
+// DeleteAccount deletes the account's ID or alias matching accountInfo.
+func (m *Manager) DeleteAccount(aliasOrId string) (err error) {
        account := &Account{}
-       if account, err = m.FindByAlias(nil, in.AccountInfo); err != nil {
-               if account, err = m.findByID(nil, in.AccountInfo); err != nil {
+       if account, err = m.FindByAlias(nil, aliasOrId); err != nil {
+               if account, err = m.findByID(nil, aliasOrId); err != nil {
                        return err
                }
        }
index 3500a89..b4891ec 100644 (file)
@@ -87,14 +87,7 @@ func TestDeleteAccount(t *testing.T) {
                testutil.FatalErr(t, err)
        }
 
-       cases := []struct {
-               AccountInfo string `json:"account_info"`
-       }{
-               {AccountInfo: account1.Alias},
-               {AccountInfo: account2.ID},
-       }
-
-       if err = m.DeleteAccount(cases[0]); err != nil {
+       if err = m.DeleteAccount(account1.Alias); err != nil {
                testutil.FatalErr(t, err)
        }
 
@@ -103,7 +96,7 @@ func TestDeleteAccount(t *testing.T) {
                t.Errorf("expected account %v should be deleted", found)
        }
 
-       if err = m.DeleteAccount(cases[1]); err != nil {
+       if err = m.DeleteAccount(account2.ID); err != nil {
                testutil.FatalErr(t, err)
        }
 
index c5b6371..f08497b 100644 (file)
@@ -28,11 +28,14 @@ func (a *API) createAccount(ctx context.Context, ins struct {
        return NewSuccessResponse(annotatedAccount)
 }
 
+// AccountInfo
+type AccountInfo struct {
+       Info string `json:"account_info"`
+}
+
 // POST /delete-account
-func (a *API) deleteAccount(ctx context.Context, in struct {
-       AccountInfo string `json:"account_info"`
-}) Response {
-       if err := a.wallet.AccountMgr.DeleteAccount(in); err != nil {
+func (a *API) deleteAccount(ctx context.Context, in AccountInfo) Response {
+       if err := a.wallet.AccountMgr.DeleteAccount(in.Info); err != nil {
                return NewErrorResponse(err)
        }
        return NewSuccessResponse(nil)
index 32e2ae6..e175ce9 100644 (file)
@@ -264,9 +264,12 @@ func (w *Wallet) ImportAccountPrivKey(xprv chainkd.XPrv, keyAlias, auth string,
 
        newAccount, err := w.AccountMgr.Create(nil, []chainkd.XPub{xpub.XPub}, SINGLE, accountAlias)
        if err != nil {
+               w.Hsm.XDelete(xpub.XPub, auth)
                return nil, err
        }
        if err := w.recoveryAccountWalletDB(newAccount, xpub, index, keyAlias); err != nil {
+               w.AccountMgr.DeleteAccount(newAccount.ID)
+               w.Hsm.XDelete(xpub.XPub, auth)
                return nil, err
        }
        return xpub, nil
index e72269f..43d8fe3 100644 (file)
@@ -186,11 +186,7 @@ func TestExportAndImportPrivKey(t *testing.T) {
                t.Fatal(err)
        }
 
-       accountInfo := struct {
-               AccountInfo string `json:"account_info"`
-       }{AccountInfo: acnt1.Alias}
-
-       w.AccountMgr.DeleteAccount(accountInfo)
+       w.AccountMgr.DeleteAccount(acnt1.Alias)
 
        acnt2, err := w.ImportAccountPrivKey(xprv, xpub.Alias, pwd, 0, acnt1.Alias)
        if err != nil {