Browse Source

Merge pull request #655 from hermeznetwork/feature/api-versioning

Add API versioning
fix/mockserer
Eduard S 3 years ago
committed by GitHub
parent
commit
c2c74e14f1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 29 deletions
  1. +23
    -21
      api/api.go
  2. +6
    -6
      api/api_test.go
  3. +2
    -2
      api/swagger.yml

+ 23
- 21
api/api.go

@ -50,38 +50,40 @@ func NewAPI(
hermezAddress: consts.HermezAddress, hermezAddress: consts.HermezAddress,
} }
v1 := server.Group("/v1")
// Add coordinator endpoints // Add coordinator endpoints
if coordinatorEndpoints { if coordinatorEndpoints {
// Account // Account
server.POST("/account-creation-authorization", a.postAccountCreationAuth)
server.GET("/account-creation-authorization/:hezEthereumAddress", a.getAccountCreationAuth)
v1.POST("/account-creation-authorization", a.postAccountCreationAuth)
v1.GET("/account-creation-authorization/:hezEthereumAddress", a.getAccountCreationAuth)
// Transaction // Transaction
server.POST("/transactions-pool", a.postPoolTx)
server.GET("/transactions-pool/:id", a.getPoolTx)
v1.POST("/transactions-pool", a.postPoolTx)
v1.GET("/transactions-pool/:id", a.getPoolTx)
} }
// Add explorer endpoints // Add explorer endpoints
if explorerEndpoints { if explorerEndpoints {
// Account // Account
server.GET("/accounts", a.getAccounts)
server.GET("/accounts/:accountIndex", a.getAccount)
server.GET("/exits", a.getExits)
server.GET("/exits/:batchNum/:accountIndex", a.getExit)
v1.GET("/accounts", a.getAccounts)
v1.GET("/accounts/:accountIndex", a.getAccount)
v1.GET("/exits", a.getExits)
v1.GET("/exits/:batchNum/:accountIndex", a.getExit)
// Transaction // Transaction
server.GET("/transactions-history", a.getHistoryTxs)
server.GET("/transactions-history/:id", a.getHistoryTx)
v1.GET("/transactions-history", a.getHistoryTxs)
v1.GET("/transactions-history/:id", a.getHistoryTx)
// Status // Status
server.GET("/batches", a.getBatches)
server.GET("/batches/:batchNum", a.getBatch)
server.GET("/full-batches/:batchNum", a.getFullBatch)
server.GET("/slots", a.getSlots)
server.GET("/slots/:slotNum", a.getSlot)
server.GET("/bids", a.getBids)
server.GET("/state", a.getState)
server.GET("/config", a.getConfig)
server.GET("/tokens", a.getTokens)
server.GET("/tokens/:id", a.getToken)
server.GET("/coordinators", a.getCoordinators)
v1.GET("/batches", a.getBatches)
v1.GET("/batches/:batchNum", a.getBatch)
v1.GET("/full-batches/:batchNum", a.getFullBatch)
v1.GET("/slots", a.getSlots)
v1.GET("/slots/:slotNum", a.getSlot)
v1.GET("/bids", a.getBids)
v1.GET("/state", a.getState)
v1.GET("/config", a.getConfig)
v1.GET("/tokens", a.getTokens)
v1.GET("/tokens/:id", a.getToken)
v1.GET("/coordinators", a.getCoordinators)
} }
return a, nil return a, nil

+ 6
- 6
api/api_test.go

@ -40,8 +40,8 @@ type Pendinger interface {
New() Pendinger New() Pendinger
} }
const apiAddr = ":4010"
const apiURL = "http://localhost" + apiAddr + "/"
const apiPort = "4010"
const apiURL = "http://localhost:" + apiPort + "/v1/"
var SetBlockchain = ` var SetBlockchain = `
Type: Blockchain Type: Blockchain
@ -258,7 +258,7 @@ func TestMain(m *testing.M) {
panic(err) panic(err)
} }
// Start server // Start server
listener, err := net.Listen("tcp", apiAddr) //nolint:gosec
listener, err := net.Listen("tcp", ":"+apiPort) //nolint:gosec
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -622,7 +622,7 @@ func TestTimeout(t *testing.T) {
apiGinTO := gin.Default() apiGinTO := gin.Default()
finishWait := make(chan interface{}) finishWait := make(chan interface{})
startWait := make(chan interface{}) startWait := make(chan interface{})
apiGinTO.GET("/wait", func(c *gin.Context) {
apiGinTO.GET("/v1/wait", func(c *gin.Context) {
cancel, err := apiConnConTO.Acquire() cancel, err := apiConnConTO.Acquire()
defer cancel() defer cancel()
require.NoError(t, err) require.NoError(t, err)
@ -650,9 +650,9 @@ func TestTimeout(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
client := &http.Client{} client := &http.Client{}
httpReq, err := http.NewRequest("GET", "http://localhost:4444/tokens", nil)
httpReq, err := http.NewRequest("GET", "http://localhost:4444/v1/tokens", nil)
require.NoError(t, err) require.NoError(t, err)
httpReqWait, err := http.NewRequest("GET", "http://localhost:4444/wait", nil)
httpReqWait, err := http.NewRequest("GET", "http://localhost:4444/v1/wait", nil)
require.NoError(t, err) require.NoError(t, err)
// Request that will get timed out // Request that will get timed out
var wg sync.WaitGroup var wg sync.WaitGroup

+ 2
- 2
api/swagger.yml

@ -60,9 +60,9 @@ externalDocs:
url: 'https://hermez.io' url: 'https://hermez.io'
servers: servers:
- description: Hosted mock up - description: Hosted mock up
url: https://apimock.hermez.network
url: https://apimock.hermez.network/v1
- description: Localhost mock Up - description: Localhost mock Up
url: http://localhost:4010
url: http://localhost:4010/v1
tags: tags:
- name: Coordinator - name: Coordinator
description: Endpoints used by the nodes running in coordinator mode. They are used to interact with the network. description: Endpoints used by the nodes running in coordinator mode. They are used to interact with the network.

Loading…
Cancel
Save