mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-07 11:26:44 +01:00
added test and move logic to api.NewAPI
This commit is contained in:
@@ -50,6 +50,8 @@ func NewAPI(
|
||||
hermezAddress: consts.HermezAddress,
|
||||
}
|
||||
|
||||
server.NoRoute(a.noRoute)
|
||||
|
||||
v1 := server.Group("/v1")
|
||||
|
||||
// Add coordinator endpoints
|
||||
|
||||
@@ -41,7 +41,8 @@ type Pendinger interface {
|
||||
}
|
||||
|
||||
const apiPort = "4010"
|
||||
const apiURL = "http://localhost:" + apiPort + "/v1/"
|
||||
const apiIP = "http://localhost:"
|
||||
const apiURL = apiIP + apiPort + "/v1/"
|
||||
|
||||
var SetBlockchain = `
|
||||
Type: Blockchain
|
||||
@@ -841,6 +842,25 @@ func doBadReq(method, path string, reqBody io.Reader, expectedResponseCode int)
|
||||
return swagger.ValidateResponse(ctx, responseValidationInput)
|
||||
}
|
||||
|
||||
func doSimpleReq(method, endpoint string) (string, error) {
|
||||
client := &http.Client{}
|
||||
httpReq, err := http.NewRequest(method, endpoint, nil)
|
||||
if err != nil {
|
||||
return "", tracerr.Wrap(err)
|
||||
}
|
||||
resp, err := client.Do(httpReq)
|
||||
if err != nil {
|
||||
return "", tracerr.Wrap(err)
|
||||
}
|
||||
//nolint
|
||||
defer resp.Body.Close()
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return "", tracerr.Wrap(err)
|
||||
}
|
||||
return string(body), nil
|
||||
}
|
||||
|
||||
// test helpers
|
||||
|
||||
func getTimestamp(blockNum int64, blocks []common.Block) time.Time {
|
||||
|
||||
21
api/noroute.go
Normal file
21
api/noroute.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"regexp"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func (a *API) noRoute(c *gin.Context) {
|
||||
matched, _ := regexp.MatchString(`^/v[0-9]+/`, c.Request.URL.Path)
|
||||
if !matched {
|
||||
c.JSON(http.StatusNotFound, gin.H{
|
||||
"error": "Version not provided, please provide a valid version in the path such as v1",
|
||||
})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusNotFound, gin.H{
|
||||
"error": "404 page not found",
|
||||
})
|
||||
}
|
||||
29
api/noroute_test.go
Normal file
29
api/noroute_test.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestNoRouteVersionNotProvided(t *testing.T) {
|
||||
endpoint := apiIP + apiPort + "/"
|
||||
// not using doGoodReq, bcs internally
|
||||
// there is a method FindRoute that checks route and returns error
|
||||
resp, err := doSimpleReq("GET", endpoint)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t,
|
||||
"{\"error\":\"Version not provided, please provide a valid version in the path such as v1\"}\n",
|
||||
resp)
|
||||
}
|
||||
|
||||
func TestNoRoute(t *testing.T) {
|
||||
endpoint := apiURL
|
||||
// not using doGoodReq, bcs internally
|
||||
// there is a method FindRoute that checks route and returns error
|
||||
resp, err := doSimpleReq("GET", endpoint)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t,
|
||||
"{\"error\":\"404 page not found\"}\n",
|
||||
resp)
|
||||
}
|
||||
Reference in New Issue
Block a user