From 98ff8b9a199dcc1407dbd067c2a63eff74369dc4 Mon Sep 17 00:00:00 2001 From: chris-j-h Date: Mon, 8 Jul 2019 13:08:28 +0100 Subject: [PATCH] Implement Accounts for vaultWallet --- accounts/vault/vault_wallet.go | 6 +++++- accounts/vault/vault_wallet_test.go | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/accounts/vault/vault_wallet.go b/accounts/vault/vault_wallet.go index f28d77dfb..bb4747e19 100644 --- a/accounts/vault/vault_wallet.go +++ b/accounts/vault/vault_wallet.go @@ -16,6 +16,7 @@ type vaultWallet struct { url accounts.URL vault vaultService updateFeed *event.Feed + accounts []accounts.Account } // vault related behaviour that will be specific to each vault type @@ -62,7 +63,10 @@ func (w vaultWallet) Close() error { } func (w vaultWallet) Accounts() []accounts.Account { - panic("implement me") + cpy := make([]accounts.Account, len(w.accounts)) + copy(cpy, w.accounts) + + return cpy } func (w vaultWallet) Contains(account accounts.Account) bool { diff --git a/accounts/vault/vault_wallet_test.go b/accounts/vault/vault_wallet_test.go index 656016912..4a7a62f54 100644 --- a/accounts/vault/vault_wallet_test.go +++ b/accounts/vault/vault_wallet_test.go @@ -550,3 +550,22 @@ func TestVaultWallet_Close_Hashicorp_ReturnsStateToBeforeOpen(t *testing.T) { t.Fatalf("cmp does not consider the two wallets equal after one was opened and closed:\n%v", diff) } } + +func TestVaultWallet_Accounts_ReturnsCopyOfAccountsInWallet(t *testing.T) { + w := vaultWallet{ + accounts: []accounts.Account{{URL: accounts.URL{Scheme: "http", Path: "url:1"}}}, + } + + got := w.Accounts() + + if !cmp.Equal(w.accounts, got) { + t.Fatalf("want: %v, got: %v", w.accounts, got) + } + + got[0].URL = accounts.URL{Scheme: "http", Path: "changed:1"} + + if cmp.Equal(w.accounts, got) { + t.Fatalf("changes to the returned accounts should not change the wallet's record of accounts") + } +} +