mirror of https://github.com/poanetwork/quorum.git
Implement Close for vaultWallet
This commit is contained in:
parent
f297b1613a
commit
9aa1427846
|
@ -11,7 +11,6 @@ type hashicorpClientConfig struct {
|
|||
CaCert string `toml:",omitempty"`
|
||||
ClientCert string `toml:",omitempty"`
|
||||
ClientKey string `toml:",omitempty"`
|
||||
EnvVarPrefix string `toml:",omitempty"`
|
||||
UseSecretCache bool `toml:",omitempty"`
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ type vaultWallet struct {
|
|||
type vaultService interface {
|
||||
status() (string, error)
|
||||
open() error
|
||||
close() error
|
||||
}
|
||||
|
||||
func newHashicorpWallet(config hashicorpWalletConfig, updateFeed *event.Feed) (vaultWallet, error) {
|
||||
|
@ -50,12 +51,14 @@ func (w vaultWallet) Open(passphrase string) error {
|
|||
if err := w.vault.open(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
w.updateFeed.Send(accounts.WalletEvent{Wallet: w, Kind: accounts.WalletOpened})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w vaultWallet) Close() error {
|
||||
panic("implement me")
|
||||
return w.vault.close()
|
||||
}
|
||||
|
||||
func (w vaultWallet) Accounts() []accounts.Account {
|
||||
|
@ -213,3 +216,9 @@ func (h *hashicorpService) open() error {
|
|||
func usingApproleAuth(roleID, secretID string) bool {
|
||||
return roleID != "" && secretID != ""
|
||||
}
|
||||
|
||||
func (h *hashicorpService) close() error {
|
||||
h.client = nil
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import (
|
|||
"fmt"
|
||||
"github.com/ethereum/go-ethereum/accounts"
|
||||
"github.com/ethereum/go-ethereum/event"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
"github.com/hashicorp/vault/api"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
|
@ -503,3 +505,48 @@ func TestVaultWallet_Open_Hashicorp_SendsEventToBackendSubscribers(t *testing.T)
|
|||
t.Fatalf("want: %v, got: %v", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVaultWallet_Close_Hashicorp_ReturnsStateToBeforeOpen(t *testing.T) {
|
||||
if err := os.Setenv(api.EnvVaultToken, "mytoken"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
config := hashicorpWalletConfig{
|
||||
Client: hashicorpClientConfig{Url: "http://url:1"},
|
||||
Secrets: []hashicorpSecretData{{Name: "secret1"}},
|
||||
}
|
||||
|
||||
w, err := newHashicorpWallet(config, &event.Feed{})
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
unopened, err := newHashicorpWallet(config, &event.Feed{})
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cmpOpts := []cmp.Option{cmp.AllowUnexported(vaultWallet{}, hashicorpService{}), cmpopts.IgnoreUnexported(event.Feed{})}
|
||||
|
||||
if diff := cmp.Diff(unopened, w, cmpOpts...); diff != "" {
|
||||
t.Fatalf("cmp does not consider the two wallets equal\n%v", diff)
|
||||
}
|
||||
|
||||
if err := w.Open(""); err != nil {
|
||||
t.Fatalf("error: %v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(unopened, w, cmpOpts...); diff == "" {
|
||||
t.Fatalf("cmp does not consider the wallets different after one was opened\n%v", diff)
|
||||
}
|
||||
|
||||
if err := w.Close(); err != nil {
|
||||
t.Fatalf("error: %v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(unopened, w, cmpOpts...); diff != "" {
|
||||
t.Fatalf("cmp does not consider the two wallets equal after one was opened and closed:\n%v", diff)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue