add add key test

This commit is contained in:
Fabian 2018-03-10 17:15:56 +01:00 committed by Ethan Buchman
parent 11fdd831ee
commit 8aec254333
3 changed files with 57 additions and 18 deletions

View File

@ -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

View File

@ -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
}

View File

@ -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: