mirror of
https://gitee.com/johng/gf.git
synced 2024-12-05 05:37:55 +08:00
71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
|
//
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file,
|
|
// You can obtain one at https://github.com/gogf/gf.
|
|
|
|
package ghttp_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
"github.com/gogf/gf/v2/net/gtcp"
|
|
"github.com/gogf/gf/v2/test/gtest"
|
|
"github.com/gogf/gf/v2/text/gstr"
|
|
"github.com/gogf/gf/v2/util/gmeta"
|
|
)
|
|
|
|
func Test_OpenApi_Swagger(t *testing.T) {
|
|
type TestReq struct {
|
|
gmeta.Meta `method:"get" summary:"Test summary" tags:"Test"`
|
|
Age int
|
|
Name string
|
|
}
|
|
type TestRes struct {
|
|
Id int
|
|
Age int
|
|
Name string
|
|
}
|
|
p, _ := gtcp.GetFreePort()
|
|
s := g.Server(p)
|
|
s.SetSwaggerPath("/swagger")
|
|
s.SetOpenApiPath("/api.json")
|
|
s.Use(ghttp.MiddlewareHandlerResponse)
|
|
s.BindHandler("/test", func(ctx context.Context, req *TestReq) (res *TestRes, err error) {
|
|
return &TestRes{
|
|
Id: 1,
|
|
Age: req.Age,
|
|
Name: req.Name,
|
|
}, nil
|
|
})
|
|
s.BindHandler("/test/error", func(ctx context.Context, req *TestReq) (res *TestRes, err error) {
|
|
return &TestRes{
|
|
Id: 1,
|
|
Age: req.Age,
|
|
Name: req.Name,
|
|
}, gerror.New("error")
|
|
})
|
|
s.SetPort(p)
|
|
s.SetDumpRouterMap(false)
|
|
s.Start()
|
|
defer s.Shutdown()
|
|
|
|
time.Sleep(100 * time.Millisecond)
|
|
gtest.C(t, func(t *gtest.T) {
|
|
c := g.Client()
|
|
c.SetPrefix(fmt.Sprintf("http://127.0.0.1:%d", p))
|
|
|
|
t.Assert(c.GetContent(ctx, "/test?age=18&name=john"), `{"code":0,"message":"","data":{"Id":1,"Age":18,"Name":"john"}}`)
|
|
t.Assert(c.GetContent(ctx, "/test/error"), `{"code":50,"message":"error","data":null}`)
|
|
|
|
t.Assert(gstr.Contains(c.GetContent(ctx, "/swagger/"), `SwaggerUIBundle`), true)
|
|
t.Assert(gstr.Contains(c.GetContent(ctx, "/api.json"), `/test/error`), true)
|
|
})
|
|
}
|