diff options
author | Felix Lange <fjl@twurst.com> | 2015-03-10 07:09:39 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2015-03-10 07:19:01 +0800 |
commit | 487f68ec4892794cb994cffd95d5bc2bf3052d3e (patch) | |
tree | 85c8fa9c2bef1e671ceeb782c9e706986c064d94 /accounts/accounts_test.go | |
parent | 9bf513e99305af733110cf23a0b47c8e73359010 (diff) | |
download | go-tangerine-487f68ec4892794cb994cffd95d5bc2bf3052d3e.tar.gz go-tangerine-487f68ec4892794cb994cffd95d5bc2bf3052d3e.tar.zst go-tangerine-487f68ec4892794cb994cffd95d5bc2bf3052d3e.zip |
accounts: add {Timed,}Unlock, remove SignLocked
Diffstat (limited to 'accounts/accounts_test.go')
-rw-r--r-- | accounts/accounts_test.go | 62 |
1 files changed, 24 insertions, 38 deletions
diff --git a/accounts/accounts_test.go b/accounts/accounts_test.go index b90da2892..427114cbd 100644 --- a/accounts/accounts_test.go +++ b/accounts/accounts_test.go @@ -1,44 +1,36 @@ package accounts import ( + "io/ioutil" + "os" "testing" - "time" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto/randentropy" - "github.com/ethereum/go-ethereum/ethutil" ) -func TestAccountManager(t *testing.T) { - ks := crypto.NewKeyStorePlain(ethutil.DefaultDataDir() + "/testaccounts") - am := NewManager(ks, 100*time.Millisecond) +func TestSign(t *testing.T) { + dir, ks := tmpKeyStore(t, crypto.NewKeyStorePlain) + defer os.RemoveAll(dir) + + am := NewManager(ks) pass := "" // not used but required by API a1, err := am.NewAccount(pass) toSign := randentropy.GetEntropyCSPRNG(32) - _, err = am.SignLocked(a1, pass, toSign) - if err != nil { - t.Fatal(err) - } - - // Cleanup - time.Sleep(150 * time.Millisecond) // wait for locking + am.Unlock(a1.Address, "") - accounts, err := am.Accounts() + _, err = am.Sign(a1, toSign) if err != nil { t.Fatal(err) } - for _, account := range accounts { - err := am.DeleteAccount(account.Address, pass) - if err != nil { - t.Fatal(err) - } - } } -func TestAccountManagerLocking(t *testing.T) { - ks := crypto.NewKeyStorePassphrase(ethutil.DefaultDataDir() + "/testaccounts") - am := NewManager(ks, 200*time.Millisecond) +func TestTimedUnlock(t *testing.T) { + dir, ks := tmpKeyStore(t, crypto.NewKeyStorePassphrase) + defer os.RemoveAll(dir) + + am := NewManager(ks) pass := "foo" a1, err := am.NewAccount(pass) toSign := randentropy.GetEntropyCSPRNG(32) @@ -46,38 +38,32 @@ func TestAccountManagerLocking(t *testing.T) { // Signing without passphrase fails because account is locked _, err = am.Sign(a1, toSign) if err != ErrLocked { - t.Fatal(err) + t.Fatal("Signing should've failed with ErrLocked before unlocking, got ", err) } // Signing with passphrase works - _, err = am.SignLocked(a1, pass, toSign) - if err != nil { + if err = am.TimedUnlock(a1.Address, pass, 100*time.Millisecond); err != nil { t.Fatal(err) } // Signing without passphrase works because account is temp unlocked _, err = am.Sign(a1, toSign) if err != nil { - t.Fatal(err) + t.Fatal("Signing shouldn't return an error after unlocking, got ", err) } - // Signing without passphrase fails after automatic locking - time.Sleep(250 * time.Millisecond) - + // Signing fails again after automatic locking + time.Sleep(150 * time.Millisecond) _, err = am.Sign(a1, toSign) if err != ErrLocked { - t.Fatal(err) + t.Fatal("Signing should've failed with ErrLocked timeout expired, got ", err) } +} - // Cleanup - accounts, err := am.Accounts() +func tmpKeyStore(t *testing.T, new func(string) crypto.KeyStore2) (string, crypto.KeyStore2) { + d, err := ioutil.TempDir("", "eth-keystore-test") if err != nil { t.Fatal(err) } - for _, account := range accounts { - err := am.DeleteAccount(account.Address, pass) - if err != nil { - t.Fatal(err) - } - } + return d, new(d) } |