9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11 crypto "github.com/tendermint/go-crypto"
12 keys "github.com/tendermint/go-crypto/keys"
15 func TestBasicCRUD(t *testing.T) {
16 assert, require := assert.New(t), require.New(t)
18 dir, err := ioutil.TempDir("", "filestorage-test")
20 defer os.RemoveAll(dir)
24 key := []byte("secret-key-here")
25 pubkey := crypto.GenPrivKeyEd25519().PubKey()
28 PubKey: pubkey.Wrap(),
31 // No data: Get and Delete return nothing
32 _, _, err = store.Get(name)
34 err = store.Delete(name)
36 // List returns empty list
37 l, err := store.List()
41 // Putting the key in the store must work
42 err = store.Put(name, key, info)
44 // But a second time is a failure
45 err = store.Put(name, key, info)
48 // Now, we can get and list properly
49 k, i, err := store.Get(name)
50 require.Nil(err, "%+v", err)
52 assert.Equal(info.Name, i.Name)
53 assert.Equal(info.PubKey, i.PubKey)
54 assert.NotEmpty(i.Address)
56 require.Nil(err, "%+v", err)
57 assert.Equal(1, len(l))
60 // querying a non-existent key fails
61 _, _, err = store.Get("badname")
64 // We can only delete once
65 err = store.Delete(name)
67 err = store.Delete(name)
70 // and then Get and List don't work
71 _, _, err = store.Get(name)
73 // List returns empty list
79 func TestDirectoryHandling(t *testing.T) {
80 assert, require := assert.New(t), require.New(t)
82 // prepare a temp dir and make sure it is not there
83 newDir := path.Join(os.TempDir(), "file-test-dir")
84 _, err := os.Open(newDir)
85 assert.True(os.IsNotExist(err))
86 defer os.RemoveAll(newDir)
88 // now, check with two levels deep....
89 parentDir := path.Join(os.TempDir(), "missing-dir")
90 nestedDir := path.Join(parentDir, "lots", "of", "levels", "here")
91 _, err = os.Open(parentDir)
92 assert.True(os.IsNotExist(err))
93 defer os.RemoveAll(parentDir)
95 // create a new storage, and verify it creates the directory with good permissions
96 for _, dir := range []string{newDir, nestedDir, newDir} {
98 d, err := os.Open(dir)
102 stat, err := d.Stat()
104 assert.Equal(dirPerm, stat.Mode()&os.ModePerm)