2017-06-25 09:23:11 +00:00
|
|
|
package ginSwagger
|
|
|
|
|
|
|
|
|
|
import (
|
2019-04-03 02:59:18 +00:00
|
|
|
"github.com/gin-contrib/gzip"
|
2017-08-04 03:22:19 +00:00
|
|
|
"net/http/httptest"
|
2018-09-26 02:28:12 +00:00
|
|
|
"os"
|
2017-08-04 03:22:19 +00:00
|
|
|
"testing"
|
|
|
|
|
|
2017-06-25 09:23:11 +00:00
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
2017-07-06 16:57:54 +00:00
|
|
|
"github.com/swaggo/gin-swagger/swaggerFiles"
|
2017-06-25 09:23:11 +00:00
|
|
|
|
2019-04-03 02:59:18 +00:00
|
|
|
_ "github.com/swaggo/gin-swagger/example/basic/docs"
|
2017-06-25 09:23:11 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestWrapHandler(t *testing.T) {
|
|
|
|
|
gin.SetMode(gin.TestMode)
|
|
|
|
|
router := gin.New()
|
|
|
|
|
|
2019-03-23 10:16:08 +00:00
|
|
|
router.GET("/*any", WrapHandler(swaggerFiles.Handler))
|
2017-06-25 09:23:11 +00:00
|
|
|
|
|
|
|
|
w1 := performRequest("GET", "/index.html", router)
|
|
|
|
|
assert.Equal(t, 200, w1.Code)
|
2019-03-24 01:56:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestWrapCustomHandler(t *testing.T) {
|
|
|
|
|
gin.SetMode(gin.TestMode)
|
|
|
|
|
router := gin.New()
|
|
|
|
|
|
|
|
|
|
router.GET("/*any", CustomWrapHandler(&Config{}, swaggerFiles.Handler))
|
|
|
|
|
|
|
|
|
|
w1 := performRequest("GET", "/index.html", router)
|
|
|
|
|
assert.Equal(t, 200, w1.Code)
|
2017-06-25 09:23:11 +00:00
|
|
|
|
|
|
|
|
w2 := performRequest("GET", "/doc.json", router)
|
|
|
|
|
assert.Equal(t, 200, w2.Code)
|
|
|
|
|
|
|
|
|
|
w3 := performRequest("GET", "/favicon-16x16.png", router)
|
|
|
|
|
assert.Equal(t, 200, w3.Code)
|
|
|
|
|
|
|
|
|
|
w4 := performRequest("GET", "/notfound", router)
|
|
|
|
|
assert.Equal(t, 404, w4.Code)
|
2018-09-26 02:28:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestDisablingWrapHandler(t *testing.T) {
|
|
|
|
|
gin.SetMode(gin.TestMode)
|
|
|
|
|
|
|
|
|
|
router := gin.New()
|
|
|
|
|
disablingKey := "SWAGGER_DISABLE"
|
|
|
|
|
|
2019-03-23 10:16:08 +00:00
|
|
|
router.GET("/simple/*any", DisablingWrapHandler(swaggerFiles.Handler, disablingKey))
|
2018-09-26 02:28:12 +00:00
|
|
|
|
|
|
|
|
w1 := performRequest("GET", "/simple/index.html", router)
|
|
|
|
|
assert.Equal(t, 200, w1.Code)
|
|
|
|
|
|
|
|
|
|
w2 := performRequest("GET", "/simple/doc.json", router)
|
|
|
|
|
assert.Equal(t, 200, w2.Code)
|
|
|
|
|
|
|
|
|
|
w3 := performRequest("GET", "/simple/favicon-16x16.png", router)
|
|
|
|
|
assert.Equal(t, 200, w3.Code)
|
|
|
|
|
|
|
|
|
|
w4 := performRequest("GET", "/simple/notfound", router)
|
|
|
|
|
assert.Equal(t, 404, w4.Code)
|
|
|
|
|
|
|
|
|
|
os.Setenv(disablingKey, "true")
|
|
|
|
|
|
2019-03-23 10:16:08 +00:00
|
|
|
router.GET("/disabling/*any", DisablingWrapHandler(swaggerFiles.Handler, disablingKey))
|
2018-09-26 02:28:12 +00:00
|
|
|
|
|
|
|
|
w11 := performRequest("GET", "/disabling/index.html", router)
|
|
|
|
|
assert.Equal(t, 404, w11.Code)
|
|
|
|
|
|
|
|
|
|
w22 := performRequest("GET", "/disabling/doc.json", router)
|
|
|
|
|
assert.Equal(t, 404, w22.Code)
|
|
|
|
|
|
|
|
|
|
w33 := performRequest("GET", "/disabling/favicon-16x16.png", router)
|
|
|
|
|
assert.Equal(t, 404, w33.Code)
|
2017-06-25 09:23:11 +00:00
|
|
|
|
2018-09-26 02:28:12 +00:00
|
|
|
w44 := performRequest("GET", "/disabling/notfound", router)
|
|
|
|
|
assert.Equal(t, 404, w44.Code)
|
2017-06-25 09:23:11 +00:00
|
|
|
}
|
|
|
|
|
|
2019-03-24 01:56:13 +00:00
|
|
|
func TestDisablingCustomWrapHandler(t *testing.T) {
|
|
|
|
|
gin.SetMode(gin.TestMode)
|
|
|
|
|
|
|
|
|
|
router := gin.New()
|
|
|
|
|
disablingKey := "SWAGGER_DISABLE2"
|
|
|
|
|
|
|
|
|
|
router.GET("/simple/*any", DisablingCustomWrapHandler(&Config{}, swaggerFiles.Handler, disablingKey))
|
|
|
|
|
|
|
|
|
|
w1 := performRequest("GET", "/simple/index.html", router)
|
|
|
|
|
assert.Equal(t, 200, w1.Code)
|
|
|
|
|
|
|
|
|
|
os.Setenv(disablingKey, "true")
|
|
|
|
|
|
|
|
|
|
router.GET("/disabling/*any", DisablingCustomWrapHandler(&Config{}, swaggerFiles.Handler, disablingKey))
|
|
|
|
|
|
|
|
|
|
w11 := performRequest("GET", "/disabling/index.html", router)
|
|
|
|
|
assert.Equal(t, 404, w11.Code)
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-03 02:59:18 +00:00
|
|
|
func TestWithGzipMiddleware(t *testing.T) {
|
|
|
|
|
gin.SetMode(gin.TestMode)
|
|
|
|
|
router := gin.New()
|
|
|
|
|
|
|
|
|
|
router.Use(gzip.Gzip(gzip.BestSpeed))
|
|
|
|
|
|
|
|
|
|
router.GET("/*any", WrapHandler(swaggerFiles.Handler))
|
|
|
|
|
|
|
|
|
|
w1 := performRequest("GET", "/index.html", router)
|
|
|
|
|
assert.Equal(t, 200, w1.Code)
|
|
|
|
|
assert.Equal(t, w1.Header()["Content-Type"][0], "text/html; charset=utf-8")
|
|
|
|
|
|
|
|
|
|
w2 := performRequest("GET", "/swagger-ui.css", router)
|
|
|
|
|
assert.Equal(t, 200, w2.Code)
|
|
|
|
|
assert.Equal(t, w2.Header()["Content-Type"][0], "text/css; charset=utf-8")
|
|
|
|
|
|
|
|
|
|
w3 := performRequest("GET", "/swagger-ui-bundle.js", router)
|
|
|
|
|
assert.Equal(t, 200, w3.Code)
|
|
|
|
|
assert.Equal(t, w3.Header()["Content-Type"][0], "application/javascript")
|
|
|
|
|
|
|
|
|
|
w4 := performRequest("GET", "/doc.json", router)
|
|
|
|
|
assert.Equal(t, 200, w4.Code)
|
|
|
|
|
assert.Equal(t, w4.Header()["Content-Type"][0], "application/json")
|
|
|
|
|
}
|
|
|
|
|
|
2017-06-25 09:23:11 +00:00
|
|
|
func performRequest(method, target string, router *gin.Engine) *httptest.ResponseRecorder {
|
|
|
|
|
r := httptest.NewRequest(method, target, nil)
|
|
|
|
|
w := httptest.NewRecorder()
|
|
|
|
|
router.ServeHTTP(w, r)
|
|
|
|
|
return w
|
|
|
|
|
}
|