diff options
author | Paweł Bylica <pawel.bylica@imapp.pl> | 2015-03-03 01:46:55 +0800 |
---|---|---|
committer | Paweł Bylica <pawel.bylica@imapp.pl> | 2015-03-03 01:46:55 +0800 |
commit | 24003c76d12b83602ca93be375a3bc19f4fb3f1b (patch) | |
tree | 90e77c349df52806d78693f93704b92786fcb693 /accounts/accounts_test.go | |
parent | 9c6d9dfc5c9fdd9aeb8f4d9926ed98008b849f2e (diff) | |
parent | 65cad14f9b27db396d036f47814d4843d947ac43 (diff) | |
download | go-tangerine-24003c76d12b83602ca93be375a3bc19f4fb3f1b.tar go-tangerine-24003c76d12b83602ca93be375a3bc19f4fb3f1b.tar.gz go-tangerine-24003c76d12b83602ca93be375a3bc19f4fb3f1b.tar.bz2 go-tangerine-24003c76d12b83602ca93be375a3bc19f4fb3f1b.tar.lz go-tangerine-24003c76d12b83602ca93be375a3bc19f4fb3f1b.tar.xz go-tangerine-24003c76d12b83602ca93be375a3bc19f4fb3f1b.tar.zst go-tangerine-24003c76d12b83602ca93be375a3bc19f4fb3f1b.zip |
Merge remote-tracking branch 'upstream/develop' into evmjit
Diffstat (limited to 'accounts/accounts_test.go')
-rw-r--r-- | accounts/accounts_test.go | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/accounts/accounts_test.go b/accounts/accounts_test.go index 30e8c6285..44d1d72f1 100644 --- a/accounts/accounts_test.go +++ b/accounts/accounts_test.go @@ -5,16 +5,78 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto/randentropy" + "github.com/ethereum/go-ethereum/ethutil" + "time" ) func TestAccountManager(t *testing.T) { - ks := crypto.NewKeyStorePlain(crypto.DefaultDataDir()) - am := NewAccountManager(ks) + ks := crypto.NewKeyStorePlain(ethutil.DefaultDataDir() + "/testaccounts") + am := NewAccountManager(ks, 100) pass := "" // not used but required by API a1, err := am.NewAccount(pass) toSign := randentropy.GetEntropyCSPRNG(32) - _, err = am.Sign(a1, pass, toSign) + _, err = am.SignLocked(a1, pass, toSign) if err != nil { t.Fatal(err) } + + // Cleanup + time.Sleep(time.Millisecond * 150) // wait for locking + + accounts, err := am.Accounts() + 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 := NewAccountManager(ks, 200) + pass := "foo" + a1, err := am.NewAccount(pass) + toSign := randentropy.GetEntropyCSPRNG(32) + + // Signing without passphrase fails because account is locked + _, err = am.Sign(a1, toSign) + if err != ErrLocked { + t.Fatal(err) + } + + // Signing with passphrase works + _, err = am.SignLocked(a1, pass, toSign) + if 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) + } + + // Signing without passphrase fails after automatic locking + time.Sleep(time.Millisecond * time.Duration(250)) + + _, err = am.Sign(a1, toSign) + if err != ErrLocked { + t.Fatal(err) + } + + // Cleanup + accounts, err := am.Accounts() + if err != nil { + t.Fatal(err) + } + for _, account := range accounts { + err := am.DeleteAccount(account.Address, pass) + if err != nil { + t.Fatal(err) + } + } } |