...

Source file src/github.com/gin-gonic/contrib/static/static_test.go

Documentation: github.com/gin-gonic/contrib/static

     1  package static
     2  
     3  import (
     4  	"io/ioutil"
     5  	"net/http"
     6  	"net/http/httptest"
     7  	"os"
     8  	"path/filepath"
     9  	"testing"
    10  
    11  	"github.com/gin-gonic/gin"
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func performRequest(r http.Handler, method, path string) *httptest.ResponseRecorder {
    16  	req, _ := http.NewRequest(method, path, nil)
    17  	w := httptest.NewRecorder()
    18  	r.ServeHTTP(w, req)
    19  	return w
    20  }
    21  
    22  func TestEmptyDirectory(t *testing.T) {
    23  	// SETUP file
    24  	testRoot, _ := os.Getwd()
    25  	f, err := ioutil.TempFile(testRoot, "")
    26  	if err != nil {
    27  		t.Error(err)
    28  	}
    29  	defer os.Remove(f.Name())
    30  	f.WriteString("Gin Web Framework")
    31  	f.Close()
    32  
    33  	dir, filename := filepath.Split(f.Name())
    34  
    35  	router := gin.New()
    36  	router.Use(ServeRoot("/", dir))
    37  	router.GET("/", func(c *gin.Context) {
    38  		c.String(200, "index")
    39  	})
    40  	router.GET("/a", func(c *gin.Context) {
    41  		c.String(200, "a")
    42  	})
    43  	router.GET("/"+filename, func(c *gin.Context) {
    44  		c.String(200, "this is not printed")
    45  	})
    46  	w := performRequest(router, "GET", "/")
    47  	assert.Equal(t, w.Code, 200)
    48  	assert.Equal(t, w.Body.String(), "index")
    49  
    50  	w = performRequest(router, "GET", "/"+filename)
    51  	assert.Equal(t, w.Code, 200)
    52  	assert.Equal(t, w.Body.String(), "Gin Web Framework")
    53  
    54  	w = performRequest(router, "GET", "/"+filename+"a")
    55  	assert.Equal(t, w.Code, 404)
    56  
    57  	w = performRequest(router, "GET", "/a")
    58  	assert.Equal(t, w.Code, 200)
    59  	assert.Equal(t, w.Body.String(), "a")
    60  
    61  	router2 := gin.New()
    62  	router2.Use(ServeRoot("/static", dir))
    63  	router2.GET("/"+filename, func(c *gin.Context) {
    64  		c.String(200, "this is printed")
    65  	})
    66  
    67  	w = performRequest(router2, "GET", "/")
    68  	assert.Equal(t, w.Code, 404)
    69  
    70  	w = performRequest(router2, "GET", "/static")
    71  	assert.Equal(t, w.Code, 404)
    72  	router2.GET("/static", func(c *gin.Context) {
    73  		c.String(200, "index")
    74  	})
    75  
    76  	w = performRequest(router2, "GET", "/static")
    77  	assert.Equal(t, w.Code, 200)
    78  
    79  	w = performRequest(router2, "GET", "/"+filename)
    80  	assert.Equal(t, w.Code, 200)
    81  	assert.Equal(t, w.Body.String(), "this is printed")
    82  
    83  	w = performRequest(router2, "GET", "/static/"+filename)
    84  	assert.Equal(t, w.Code, 200)
    85  	assert.Equal(t, w.Body.String(), "Gin Web Framework")
    86  }
    87  

View as plain text