OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / tendermint / go-crypto / keys / storage / memstorage / main_test.go
1 package memstorage
2
3 import (
4         "testing"
5
6         "github.com/stretchr/testify/assert"
7         crypto "github.com/tendermint/go-crypto"
8         keys "github.com/tendermint/go-crypto/keys"
9 )
10
11 func TestBasicCRUD(t *testing.T) {
12         assert := assert.New(t)
13         store := New()
14
15         name := "foo"
16         key := []byte("secret-key-here")
17         pubkey := crypto.GenPrivKeyEd25519().PubKey()
18         info := keys.Info{
19                 Name:   name,
20                 PubKey: pubkey,
21         }
22
23         // No data: Get and Delete return nothing
24         _, _, err := store.Get(name)
25         assert.NotNil(err)
26         err = store.Delete(name)
27         assert.NotNil(err)
28         // List returns empty list
29         l, err := store.List()
30         assert.Nil(err)
31         assert.Empty(l)
32
33         // Putting the key in the  store must work
34         err = store.Put(name, key, info)
35         assert.Nil(err)
36         // But a second time is a failure
37         err = store.Put(name, key, info)
38         assert.NotNil(err)
39
40         // Now, we can get and list properly
41         k, i, err := store.Get(name)
42         assert.Nil(err)
43         assert.Equal(key, k)
44         assert.Equal(info.Name, i.Name)
45         assert.Equal(info.PubKey, i.PubKey)
46         assert.NotEmpty(i.Address)
47         l, err = store.List()
48         assert.Nil(err)
49         assert.Equal(1, len(l))
50         assert.Equal(i, l[0])
51
52         // querying a non-existent key fails
53         _, _, err = store.Get("badname")
54         assert.NotNil(err)
55
56         // We can only delete once
57         err = store.Delete(name)
58         assert.Nil(err)
59         err = store.Delete(name)
60         assert.NotNil(err)
61
62         // and then Get and List don't work
63         _, _, err = store.Get(name)
64         assert.NotNil(err)
65         // List returns empty list
66         l, err = store.List()
67         assert.Nil(err)
68         assert.Empty(l)
69 }