diff --git a/client/keys/utils_test.go b/client/keys/utils_test.go new file mode 100644 index 000000000..39ca63428 --- /dev/null +++ b/client/keys/utils_test.go @@ -0,0 +1,39 @@ +package keys + +import ( + "github.com/cosmos/cosmos-sdk/crypto/keys" + "github.com/stretchr/testify/require" + "io/ioutil" + "os" + "testing" +) + +func TestGetKeyBaseLocks(t *testing.T) { + dir, err := ioutil.TempDir("", "cosmos-sdk-keys") + require.Nil(t, err) + defer os.RemoveAll(dir) + + // Acquire db + kb, err := GetKeyBaseFromDirWithWritePerm(dir) + require.Nil(t, err) + _, _, err = kb.CreateMnemonic("foo", keys.English, "12345678", keys.Secp256k1) + require.Nil(t, err) + // Reset global variable + keybase = nil + // Try to acquire another keybase from the same storage + _, err = GetKeyBaseFromDirWithWritePerm(dir) + require.NotNil(t, err) + _, err = GetKeyBaseFromDirWithWritePerm(dir) + require.NotNil(t, err) + + // Close the db and try to acquire the lock + kb.CloseDB() + kb, err = GetKeyBaseFromDirWithWritePerm(dir) + require.Nil(t, err) + + // Try to acquire another read-only keybase from the same storage + _, err = GetKeyBaseFromDir(dir) + require.Nil(t, err) + + kb.CloseDB() +}