add request test helper
This commit is contained in:
parent
8aec254333
commit
f1cdf57a48
|
@ -28,45 +28,36 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestKeys(t *testing.T) {
|
func TestKeys(t *testing.T) {
|
||||||
prepareClient(t)
|
_, db, err := initKeybase(t)
|
||||||
|
require.Nil(t, err, "Couldn't init Keybase")
|
||||||
|
|
||||||
cdc := app.MakeCodec()
|
cdc := app.MakeCodec()
|
||||||
r := initRouter(cdc)
|
r := initRouter(cdc)
|
||||||
|
|
||||||
// empty keys
|
// empty keys
|
||||||
req, err := http.NewRequest("GET", "/keys", nil)
|
res := request(t, r, "GET", "/keys", nil)
|
||||||
require.Nil(t, err)
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
res := httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
|
||||||
body := res.Body.String()
|
body := res.Body.String()
|
||||||
require.Equal(t, body, "[]", "Expected an empty array")
|
assert.Equal(t, body, "[]", "Expected an empty array")
|
||||||
|
|
||||||
// add key
|
// add key
|
||||||
addr := createKey(t, r)
|
addr := createKey(t, r)
|
||||||
assert.Len(t, addr, 40, "Returned address has wrong format", res.Body.String())
|
assert.Len(t, addr, 40, "Returned address has wrong format", res.Body.String())
|
||||||
|
|
||||||
// existing keys
|
// existing keys
|
||||||
req, err = http.NewRequest("GET", "/keys", nil)
|
res = request(t, r, "GET", "/keys", nil)
|
||||||
require.Nil(t, err)
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
|
||||||
var m [1]keys.KeyOutput
|
var m [1]keys.KeyOutput
|
||||||
decoder := json.NewDecoder(res.Body)
|
decoder := json.NewDecoder(res.Body)
|
||||||
err = decoder.Decode(&m)
|
err = decoder.Decode(&m)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, m[0].Name, "test", "Did not serve keys name correctly")
|
assert.Equal(t, m[0].Name, "test", "Did not serve keys name correctly")
|
||||||
assert.Equal(t, m[0].Address, addr, "Did not serve keys Address correctly")
|
assert.Equal(t, m[0].Address, addr, "Did not serve keys Address correctly")
|
||||||
|
|
||||||
// select key
|
// select key
|
||||||
req, _ = http.NewRequest("GET", "/keys/test", nil)
|
res = request(t, r, "GET", "/keys/test", nil)
|
||||||
res = httptest.NewRecorder()
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
|
||||||
var m2 keys.KeyOutput
|
var m2 keys.KeyOutput
|
||||||
decoder = json.NewDecoder(res.Body)
|
decoder = json.NewDecoder(res.Body)
|
||||||
err = decoder.Decode(&m2)
|
err = decoder.Decode(&m2)
|
||||||
|
@ -76,29 +67,19 @@ func TestKeys(t *testing.T) {
|
||||||
|
|
||||||
// update key
|
// update key
|
||||||
var jsonStr = []byte(`{"old_password":"1234567890", "new_password":"12345678901"}`)
|
var jsonStr = []byte(`{"old_password":"1234567890", "new_password":"12345678901"}`)
|
||||||
req, err = http.NewRequest("PUT", "/keys/test", bytes.NewBuffer(jsonStr))
|
res = request(t, r, "PUT", "/keys/test", jsonStr)
|
||||||
require.Nil(t, err)
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
|
||||||
|
|
||||||
// here it should say unauthorized as we changed the password before
|
// here it should say unauthorized as we changed the password before
|
||||||
req, err = http.NewRequest("PUT", "/keys/test", bytes.NewBuffer(jsonStr))
|
res = request(t, r, "PUT", "/keys/test", jsonStr)
|
||||||
require.Nil(t, err)
|
require.Equal(t, http.StatusUnauthorized, res.Code, res.Body.String())
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
assert.Equal(t, http.StatusUnauthorized, res.Code, res.Body.String())
|
|
||||||
|
|
||||||
// delete key
|
// delete key
|
||||||
jsonStr = []byte(`{"password":"12345678901"}`)
|
jsonStr = []byte(`{"password":"12345678901"}`)
|
||||||
req, err = http.NewRequest("DELETE", "/keys/test", bytes.NewBuffer(jsonStr))
|
res = request(t, r, "DELETE", "/keys/test", jsonStr)
|
||||||
require.Nil(t, err)
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
db.Close()
|
||||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVersion(t *testing.T) {
|
func TestVersion(t *testing.T) {
|
||||||
|
@ -107,11 +88,7 @@ func TestVersion(t *testing.T) {
|
||||||
r := initRouter(cdc)
|
r := initRouter(cdc)
|
||||||
|
|
||||||
// node info
|
// node info
|
||||||
req, err := http.NewRequest("GET", "/version", nil)
|
res := request(t, r, "GET", "/version", nil)
|
||||||
require.Nil(t, err)
|
|
||||||
res := httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
// TODO fix regexp
|
// TODO fix regexp
|
||||||
|
@ -131,26 +108,18 @@ func TestNodeStatus(t *testing.T) {
|
||||||
r := initRouter(cdc)
|
r := initRouter(cdc)
|
||||||
|
|
||||||
// node info
|
// node info
|
||||||
req, err := http.NewRequest("GET", "/node_info", nil)
|
res := request(t, r, "GET", "/node_info", nil)
|
||||||
require.Nil(t, err)
|
|
||||||
res := httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
var m p2p.NodeInfo
|
var m p2p.NodeInfo
|
||||||
decoder := json.NewDecoder(res.Body)
|
decoder := json.NewDecoder(res.Body)
|
||||||
err = decoder.Decode(&m)
|
err := decoder.Decode(&m)
|
||||||
require.Nil(t, err, "Couldn't parse node info")
|
require.Nil(t, err, "Couldn't parse node info")
|
||||||
|
|
||||||
assert.NotEqual(t, p2p.NodeInfo{}, m, "res: %v", res)
|
assert.NotEqual(t, p2p.NodeInfo{}, m, "res: %v", res)
|
||||||
|
|
||||||
// syncing
|
// syncing
|
||||||
req, err = http.NewRequest("GET", "/syncing", nil)
|
res = request(t, r, "GET", "/syncing", nil)
|
||||||
require.Nil(t, err)
|
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
assert.Equal(t, "true", res.Body.String())
|
assert.Equal(t, "true", res.Body.String())
|
||||||
|
@ -164,35 +133,27 @@ func TestBlock(t *testing.T) {
|
||||||
cdc := app.MakeCodec()
|
cdc := app.MakeCodec()
|
||||||
r := initRouter(cdc)
|
r := initRouter(cdc)
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "/blocks/latest", nil)
|
res := request(t, r, "GET", "/blocks/latest", nil)
|
||||||
require.Nil(t, err)
|
|
||||||
res := httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
var m ctypes.ResultBlock
|
var m ctypes.ResultBlock
|
||||||
decoder := json.NewDecoder(res.Body)
|
decoder := json.NewDecoder(res.Body)
|
||||||
err = decoder.Decode(&m)
|
err := decoder.Decode(&m)
|
||||||
require.Nil(t, err, "Couldn't parse block")
|
require.Nil(t, err, "Couldn't parse block")
|
||||||
|
|
||||||
assert.NotEqual(t, ctypes.ResultBlock{}, m)
|
assert.NotEqual(t, ctypes.ResultBlock{}, m)
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", "/blocks/1", nil)
|
// --
|
||||||
require.Nil(t, err)
|
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
res = request(t, r, "GET", "/blocks/1", nil)
|
||||||
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
assert.NotEqual(t, ctypes.ResultBlock{}, m)
|
assert.NotEqual(t, ctypes.ResultBlock{}, m)
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", "/blocks/2", nil)
|
// --
|
||||||
require.Nil(t, err)
|
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
res = request(t, r, "GET", "/blocks/2", nil)
|
||||||
require.Equal(t, http.StatusNotFound, res.Code)
|
require.Equal(t, http.StatusNotFound, res.Code, res.Body.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestValidators(t *testing.T) {
|
func TestValidators(t *testing.T) {
|
||||||
|
@ -203,34 +164,26 @@ func TestValidators(t *testing.T) {
|
||||||
cdc := app.MakeCodec()
|
cdc := app.MakeCodec()
|
||||||
r := initRouter(cdc)
|
r := initRouter(cdc)
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "/validatorsets/latest", nil)
|
res := request(t, r, "GET", "/validatorsets/latest", nil)
|
||||||
require.Nil(t, err)
|
|
||||||
res := httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
var m ctypes.ResultValidators
|
var m ctypes.ResultValidators
|
||||||
decoder := json.NewDecoder(res.Body)
|
decoder := json.NewDecoder(res.Body)
|
||||||
err = decoder.Decode(&m)
|
err := decoder.Decode(&m)
|
||||||
require.Nil(t, err, "Couldn't parse block")
|
require.Nil(t, err, "Couldn't parse validatorset")
|
||||||
|
|
||||||
assert.NotEqual(t, ctypes.ResultValidators{}, m)
|
assert.NotEqual(t, ctypes.ResultValidators{}, m)
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", "/validatorsets/1", nil)
|
// --
|
||||||
require.Nil(t, err)
|
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
res = request(t, r, "GET", "/validatorsets/1", nil)
|
||||||
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
require.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
assert.NotEqual(t, ctypes.ResultValidators{}, m)
|
assert.NotEqual(t, ctypes.ResultValidators{}, m)
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", "/validatorsets/2", nil)
|
// --
|
||||||
require.Nil(t, err)
|
|
||||||
res = httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
res = request(t, r, "GET", "/validatorsets/2", nil)
|
||||||
require.Equal(t, http.StatusNotFound, res.Code)
|
require.Equal(t, http.StatusNotFound, res.Code)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,13 +256,28 @@ func runOrTimeout(cmd *cobra.Command, timeout time.Duration) error {
|
||||||
|
|
||||||
func createKey(t *testing.T, r http.Handler) string {
|
func createKey(t *testing.T, r http.Handler) string {
|
||||||
var jsonStr = []byte(`{"name":"test", "password":"1234567890"}`)
|
var jsonStr = []byte(`{"name":"test", "password":"1234567890"}`)
|
||||||
req, err := http.NewRequest("POST", "/keys", bytes.NewBuffer(jsonStr))
|
res := request(t, r, "POST", "/keys", jsonStr)
|
||||||
require.Nil(t, err)
|
|
||||||
res := httptest.NewRecorder()
|
|
||||||
|
|
||||||
r.ServeHTTP(res, req)
|
|
||||||
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
assert.Equal(t, http.StatusOK, res.Code, res.Body.String())
|
||||||
|
|
||||||
addr := res.Body.String()
|
addr := res.Body.String()
|
||||||
return addr
|
return addr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func request(t *testing.T, r http.Handler, method string, path string, payload []byte) *httptest.ResponseRecorder {
|
||||||
|
req, err := http.NewRequest(method, path, bytes.NewBuffer(payload))
|
||||||
|
require.Nil(t, err)
|
||||||
|
res := httptest.NewRecorder()
|
||||||
|
|
||||||
|
r.ServeHTTP(res, req)
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue