add add key test
This commit is contained in:
parent
11fdd831ee
commit
8aec254333
@ -164,14 +164,14 @@ func AddNewKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
algo := keys.CryptoAlgo(m.Type)
|
||||
|
||||
_, _, err = kb.Create(m.Name, m.Password, algo)
|
||||
info, _, err := kb.Create(m.Name, m.Password, algo)
|
||||
// TODO handle different errors
|
||||
if err != nil {
|
||||
w.WriteHeader(500)
|
||||
w.Write([]byte(err.Error()))
|
||||
return
|
||||
}
|
||||
w.WriteHeader(200)
|
||||
w.Write([]byte(info.PubKey.Address().String()))
|
||||
}
|
||||
|
||||
// function to just a new seed to display in the UI before actually persisting it in the keybase
|
||||
|
||||
@ -28,8 +28,7 @@ import (
|
||||
)
|
||||
|
||||
func TestKeys(t *testing.T) {
|
||||
kb, db, err := initKeybase(t)
|
||||
require.Nil(t, err, "Couldn't init Keybase")
|
||||
prepareClient(t)
|
||||
|
||||
cdc := app.MakeCodec()
|
||||
r := initRouter(cdc)
|
||||
@ -44,8 +43,9 @@ func TestKeys(t *testing.T) {
|
||||
body := res.Body.String()
|
||||
require.Equal(t, body, "[]", "Expected an empty array")
|
||||
|
||||
info, _, err := kb.Create("test", "1234567890", cryptoKeys.CryptoAlgo("ed25519"))
|
||||
require.Nil(t, err, "Couldn't add key")
|
||||
// add key
|
||||
addr := createKey(t, r)
|
||||
assert.Len(t, addr, 40, "Returned address has wrong format", res.Body.String())
|
||||
|
||||
// existing keys
|
||||
req, err = http.NewRequest("GET", "/keys", nil)
|
||||
@ -59,7 +59,7 @@ func TestKeys(t *testing.T) {
|
||||
err = decoder.Decode(&m)
|
||||
|
||||
assert.Equal(t, m[0].Name, "test", "Did not serve keys name correctly")
|
||||
assert.Equal(t, m[0].Address, info.PubKey.Address().String(), "Did not serve keys Address correctly")
|
||||
assert.Equal(t, m[0].Address, addr, "Did not serve keys Address correctly")
|
||||
|
||||
// select key
|
||||
req, _ = http.NewRequest("GET", "/keys/test", nil)
|
||||
@ -72,7 +72,7 @@ func TestKeys(t *testing.T) {
|
||||
err = decoder.Decode(&m2)
|
||||
|
||||
assert.Equal(t, m2.Name, "test", "Did not serve keys name correctly")
|
||||
assert.Equal(t, m2.Address, info.PubKey.Address().String(), "Did not serve keys Address correctly")
|
||||
assert.Equal(t, m2.Address, addr, "Did not serve keys Address correctly")
|
||||
|
||||
// update key
|
||||
var jsonStr = []byte(`{"old_password":"1234567890", "new_password":"12345678901"}`)
|
||||
@ -99,8 +99,6 @@ func TestKeys(t *testing.T) {
|
||||
|
||||
r.ServeHTTP(res, req)
|
||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||
|
||||
db.Close()
|
||||
}
|
||||
|
||||
func TestVersion(t *testing.T) {
|
||||
@ -266,11 +264,52 @@ func setupViper() func() {
|
||||
}
|
||||
}
|
||||
|
||||
func initKeybase(t *testing.T) (cryptoKeys.Keybase, *dbm.GoLevelDB, error) {
|
||||
os.RemoveAll("./testKeybase")
|
||||
db, err := dbm.NewGoLevelDB("keys", "./testKeybase")
|
||||
require.Nil(t, err)
|
||||
kb := client.GetKeyBase(db)
|
||||
keys.SetKeyBase(kb)
|
||||
return kb, db, nil
|
||||
func startServer(t *testing.T) {
|
||||
defer setupViper()()
|
||||
// init server
|
||||
initCmd := server.InitCmd(mock.GenInitOptions, log.NewNopLogger())
|
||||
err := initCmd.RunE(nil, nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
// start server
|
||||
viper.Set("with-tendermint", true)
|
||||
startCmd := server.StartCmd(mock.NewApp, log.NewNopLogger())
|
||||
timeout := time.Duration(3) * time.Second
|
||||
|
||||
err = runOrTimeout(startCmd, timeout)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
// copied from server/start_test.go
|
||||
func runOrTimeout(cmd *cobra.Command, timeout time.Duration) error {
|
||||
done := make(chan error)
|
||||
go func(out chan<- error) {
|
||||
// this should NOT exit
|
||||
err := cmd.RunE(nil, nil)
|
||||
if err != nil {
|
||||
out <- err
|
||||
}
|
||||
out <- fmt.Errorf("start died for unknown reasons")
|
||||
}(done)
|
||||
timer := time.NewTimer(timeout)
|
||||
|
||||
select {
|
||||
case err := <-done:
|
||||
return err
|
||||
case <-timer.C:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func createKey(t *testing.T, r http.Handler) string {
|
||||
var jsonStr = []byte(`{"name":"test", "password":"1234567890"}`)
|
||||
req, err := http.NewRequest("POST", "/keys", bytes.NewBuffer(jsonStr))
|
||||
require.Nil(t, err)
|
||||
res := httptest.NewRecorder()
|
||||
|
||||
r.ServeHTTP(res, req)
|
||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||
|
||||
addr := res.Body.String()
|
||||
return addr
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ paths:
|
||||
summary: Create a new account locally
|
||||
responses:
|
||||
200:
|
||||
description: OK
|
||||
description: Returns address of the account created
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user