santa/utils/keys_test.go

129 lines
3.0 KiB
Go

package utils
import (
"os"
"encoding/json"
"testing"
"github.com/stretchr/testify/require"
ckeys "github.com/cosmos/cosmos-sdk/crypto/keys"
)
func TestAddKey(t *testing.T) {
app := setup(t)
defer os.RemoveAll(app.KeyDir)
out, err := app.GetKeys()
require.NoError(t, err)
require.Equal(t, 0, len(out))
// invalid name
_, err = app.AddNewKey(testInvalidName, testPassword, testMnemonic, false)
require.Error(t, err)
// invalid password
_, err = app.AddNewKey(testName, testInvalidPassword, testMnemonic, false)
require.Error(t, err)
// invalid mnemonic
_, err = app.AddNewKey(testName, testPassword, testInvalidMnemonic, false)
require.Error(t, err)
// valid add
out, err = app.AddNewKey(testName, testPassword, testMnemonic, false)
require.NoError(t, err)
var output ckeys.KeyOutput
err = json.Unmarshal(out, &output)
require.NoError(t, err)
require.Equal(t, testName, output.Name)
require.Equal(t, "terra1ch5ezwqftx8z8969l30j634wzs8772xfp5wur4", output.Address)
require.Equal(t, "terrapub1addwnpepqvgqm0lpmjn4dga903dugvmw8qtzcush2agl8lx3xz2mxcm8vvwf2adw7e3", output.PubKey)
require.Equal(t, testMnemonic, output.Mnemonic)
}
func TestGetKey(t *testing.T) {
app := setup(t)
defer os.RemoveAll(app.KeyDir)
out, err := app.GetKey(testName, "acc")
require.Error(t, err)
require.Equal(t, 0, len(out))
out, err = app.AddNewKey(testName, testPassword, testMnemonic, false)
require.NoError(t, err)
_, err = app.GetKey(testName, "acc")
require.NoError(t, err)
}
func TestDeleteKey(t *testing.T) {
app := setup(t)
defer os.RemoveAll(app.KeyDir)
out, err := app.AddNewKey(testName, testPassword, testMnemonic, false)
require.NoError(t, err)
out, err = app.GetKeys()
require.NoError(t, err)
var outputs []ckeys.KeyOutput
err = json.Unmarshal(out, &outputs)
require.Equal(t, 1, len(outputs))
// not exist name
err = app.DeleteKey(testInvalidName, testPassword)
require.Error(t, err)
// invalid password
err = app.DeleteKey(testName, testInvalidPassword)
require.Error(t, err)
// valid
err = app.DeleteKey(testName, testPassword)
require.NoError(t, err)
out, err = app.GetKeys()
require.NoError(t, err)
var outputs2 []ckeys.KeyOutput
err = json.Unmarshal(out, &outputs2)
require.Equal(t, 0, len(outputs2))
}
func TestUpdateKey(t *testing.T) {
app := setup(t)
defer os.RemoveAll(app.KeyDir)
out, err := app.AddNewKey(testName, testPassword, testMnemonic, false)
require.NoError(t, err)
out, err = app.GetKeys()
require.NoError(t, err)
var outputs []ckeys.KeyOutput
err = json.Unmarshal(out, &outputs)
// not exist name
err = app.UpdateKey(testInvalidName, testPassword, testUpdatePassword)
require.Error(t, err)
// invalid password
err = app.UpdateKey(testName, testInvalidPassword, testUpdatePassword)
require.Error(t, err)
// valid
err = app.UpdateKey(testName, testPassword, testUpdatePassword)
require.NoError(t, err)
// with old password
err = app.DeleteKey(testName, testPassword)
require.Error(t, err)
// valid
err = app.DeleteKey(testName, testUpdatePassword)
require.NoError(t, err)
}