Add disabling handler

Add tests to disabling handler

Cover 100% of disabling handler code
This commit is contained in:
Nikita Goncharov 2018-09-23 23:26:28 +03:00
parent 6192cec7d2
commit c669c09a22
2 changed files with 55 additions and 1 deletions

View File

@ -1,10 +1,12 @@
package ginSwagger
import (
"golang.org/x/net/webdav"
"html/template"
"os"
"regexp"
"golang.org/x/net/webdav"
"github.com/gin-gonic/gin"
"github.com/swaggo/swag"
)
@ -49,6 +51,21 @@ func WrapHandler(h *webdav.Handler) gin.HandlerFunc {
}
}
// DisablingWrapHandler turn handler off
// if specified environment variable passed
func DisablingWrapHandler(h *webdav.Handler, envName string) gin.HandlerFunc {
eFlag := os.Getenv(envName)
if eFlag != "" {
return func(c *gin.Context) {
// Simulate behavior when route unspecified and
// return 404 HTTP code
c.String(404, "")
}
}
return WrapHandler(h)
}
const swagger_index_templ = `<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">

View File

@ -2,6 +2,7 @@ package ginSwagger
import (
"net/http/httptest"
"os"
"testing"
"github.com/gin-gonic/gin"
@ -28,7 +29,43 @@ func TestWrapHandler(t *testing.T) {
w4 := performRequest("GET", "/notfound", router)
assert.Equal(t, 404, w4.Code)
}
func TestDisablingWrapHandler(t *testing.T) {
gin.SetMode(gin.TestMode)
router := gin.New()
disablingKey := "SWAGGER_DISABLE"
router.GET("/simple/*any", DisablingWrapHandler(swaggerFiles.Handler, disablingKey))
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")
router.GET("/disabling/*any", DisablingWrapHandler(swaggerFiles.Handler, disablingKey))
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)
w44 := performRequest("GET", "/disabling/notfound", router)
assert.Equal(t, 404, w44.Code)
}
func performRequest(method, target string, router *gin.Engine) *httptest.ResponseRecorder {