packages/middlewares/dump/req_test.go

75 lines
1.5 KiB
Go

package dump
import (
"bytes"
"encoding/json"
"gitea.loveuer.com/yizhisec/packages/logger"
"gitea.loveuer.com/yizhisec/packages/tool"
"github.com/gin-gonic/gin"
"net/http"
"testing"
"time"
)
func TestRequest(t *testing.T) {
ready := make(chan struct{})
go func() {
app := gin.Default()
app.Use(Request(t.Context(), RequestHandlerCurl))
app.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{"name": c.Query("name")})
})
app.POST("/hello", func(c *gin.Context) {
type Req struct {
Id int `json:"id"`
Name string `json:"name"`
}
var (
err error
req = new(Req)
)
if err = c.BindJSON(req); err != nil {
c.JSON(200, gin.H{"err": err})
}
c.JSON(200, gin.H{"id": req.Id, "name": req.Name})
})
logger.Fatal(app.Run(":18080").Error())
}()
go func() {
time.Sleep(1 * time.Second)
for _ = range 10 {
_, err := http.Get("http://localhost:18080/hello?name=" + tool.RandomName())
if err != nil {
t.Error(err.Error())
}
}
for _ = range 5 {
bs, _ := json.Marshal(map[string]interface{}{"id": tool.RandomInt(30), "name": tool.RandomName()})
req, err := http.NewRequest(http.MethodPost, "http://localhost:18080/hello", bytes.NewReader(bs))
req.Header.Set("Content-Type", "application/json")
if err != nil {
t.Fatal(err.Error())
}
_, err = http.DefaultClient.Do(req)
if err != nil {
t.Fatal(err.Error())
}
}
ready <- struct{}{}
}()
<-ready
time.Sleep(1 * time.Second)
}