|
@@ -10,6 +10,7 @@ import (
|
|
|
"html/template"
|
|
"html/template"
|
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
|
"net/http"
|
|
"net/http"
|
|
|
|
|
+ "net/http/httptest"
|
|
|
"reflect"
|
|
"reflect"
|
|
|
"testing"
|
|
"testing"
|
|
|
"time"
|
|
"time"
|
|
@@ -22,105 +23,105 @@ func formatAsDate(t time.Time) string {
|
|
|
return fmt.Sprintf("%d/%02d/%02d", year, month, day)
|
|
return fmt.Sprintf("%d/%02d/%02d", year, month, day)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func setupHTMLFiles(t *testing.T, mode string, tls bool) func() {
|
|
|
|
|
- go func() {
|
|
|
|
|
- SetMode(mode)
|
|
|
|
|
- router := New()
|
|
|
|
|
- router.Delims("{[{", "}]}")
|
|
|
|
|
- router.SetFuncMap(template.FuncMap{
|
|
|
|
|
- "formatAsDate": formatAsDate,
|
|
|
|
|
- })
|
|
|
|
|
- router.LoadHTMLFiles("./testdata/template/hello.tmpl", "./testdata/template/raw.tmpl")
|
|
|
|
|
- router.GET("/test", func(c *Context) {
|
|
|
|
|
- c.HTML(http.StatusOK, "hello.tmpl", map[string]string{"name": "world"})
|
|
|
|
|
- })
|
|
|
|
|
- router.GET("/raw", func(c *Context) {
|
|
|
|
|
- c.HTML(http.StatusOK, "raw.tmpl", map[string]interface{}{
|
|
|
|
|
- "now": time.Date(2017, 07, 01, 0, 0, 0, 0, time.UTC),
|
|
|
|
|
- })
|
|
|
|
|
|
|
+func setupHTMLFiles(t *testing.T, mode string, tls bool, loadMethod func(*Engine)) *httptest.Server {
|
|
|
|
|
+ SetMode(mode)
|
|
|
|
|
+ router := New()
|
|
|
|
|
+ router.Delims("{[{", "}]}")
|
|
|
|
|
+ router.SetFuncMap(template.FuncMap{
|
|
|
|
|
+ "formatAsDate": formatAsDate,
|
|
|
|
|
+ })
|
|
|
|
|
+ loadMethod(router)
|
|
|
|
|
+ router.GET("/test", func(c *Context) {
|
|
|
|
|
+ c.HTML(http.StatusOK, "hello.tmpl", map[string]string{"name": "world"})
|
|
|
|
|
+ })
|
|
|
|
|
+ router.GET("/raw", func(c *Context) {
|
|
|
|
|
+ c.HTML(http.StatusOK, "raw.tmpl", map[string]interface{}{
|
|
|
|
|
+ "now": time.Date(2017, 07, 01, 0, 0, 0, 0, time.UTC),
|
|
|
})
|
|
})
|
|
|
- if tls {
|
|
|
|
|
- // these files generated by `go run $GOROOT/src/crypto/tls/generate_cert.go --host 127.0.0.1`
|
|
|
|
|
- router.RunTLS(":9999", "./testdata/certificate/cert.pem", "./testdata/certificate/key.pem")
|
|
|
|
|
- } else {
|
|
|
|
|
- router.Run(":8888")
|
|
|
|
|
- }
|
|
|
|
|
- }()
|
|
|
|
|
- t.Log("waiting 1 second for server startup")
|
|
|
|
|
- time.Sleep(1 * time.Second)
|
|
|
|
|
- return func() {}
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
-func setupHTMLGlob(t *testing.T, mode string, tls bool) func() {
|
|
|
|
|
- go func() {
|
|
|
|
|
- SetMode(mode)
|
|
|
|
|
- router := New()
|
|
|
|
|
- router.Delims("{[{", "}]}")
|
|
|
|
|
- router.SetFuncMap(template.FuncMap{
|
|
|
|
|
- "formatAsDate": formatAsDate,
|
|
|
|
|
- })
|
|
|
|
|
- router.LoadHTMLGlob("./testdata/template/*")
|
|
|
|
|
- router.GET("/test", func(c *Context) {
|
|
|
|
|
- c.HTML(http.StatusOK, "hello.tmpl", map[string]string{"name": "world"})
|
|
|
|
|
- })
|
|
|
|
|
- router.GET("/raw", func(c *Context) {
|
|
|
|
|
- c.HTML(http.StatusOK, "raw.tmpl", map[string]interface{}{
|
|
|
|
|
- "now": time.Date(2017, 07, 01, 0, 0, 0, 0, time.UTC),
|
|
|
|
|
- })
|
|
|
|
|
- })
|
|
|
|
|
- if tls {
|
|
|
|
|
- // these files generated by `go run $GOROOT/src/crypto/tls/generate_cert.go --host 127.0.0.1`
|
|
|
|
|
- router.RunTLS(":9999", "./testdata/certificate/cert.pem", "./testdata/certificate/key.pem")
|
|
|
|
|
- } else {
|
|
|
|
|
- router.Run(":8888")
|
|
|
|
|
- }
|
|
|
|
|
- }()
|
|
|
|
|
- t.Log("waiting 1 second for server startup")
|
|
|
|
|
- time.Sleep(1 * time.Second)
|
|
|
|
|
- return func() {}
|
|
|
|
|
|
|
+ var ts *httptest.Server
|
|
|
|
|
+
|
|
|
|
|
+ if tls {
|
|
|
|
|
+ ts = httptest.NewTLSServer(router)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ts = httptest.NewServer(router)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return ts
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func TestLoadHTMLGlob(t *testing.T) {
|
|
|
|
|
- td := setupHTMLGlob(t, DebugMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
|
|
|
|
+func TestLoadHTMLGlobDebugMode(t *testing.T) {
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ DebugMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLGlob("./testdata/template/*")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
-
|
|
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func TestLoadHTMLGlob2(t *testing.T) {
|
|
|
|
|
- td := setupHTMLGlob(t, TestMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
|
|
|
|
+func TestLoadHTMLGlobTestMode(t *testing.T) {
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ TestMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLGlob("./testdata/template/*")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
-
|
|
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func TestLoadHTMLGlob3(t *testing.T) {
|
|
|
|
|
- td := setupHTMLGlob(t, ReleaseMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
|
|
|
|
+func TestLoadHTMLGlobReleaseMode(t *testing.T) {
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ ReleaseMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLGlob("./testdata/template/*")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
-
|
|
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestLoadHTMLGlobUsingTLS(t *testing.T) {
|
|
func TestLoadHTMLGlobUsingTLS(t *testing.T) {
|
|
|
- td := setupHTMLGlob(t, DebugMode, true)
|
|
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ DebugMode,
|
|
|
|
|
+ true,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLGlob("./testdata/template/*")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
// Use InsecureSkipVerify for avoiding `x509: certificate signed by unknown authority` error
|
|
// Use InsecureSkipVerify for avoiding `x509: certificate signed by unknown authority` error
|
|
|
tr := &http.Transport{
|
|
tr := &http.Transport{
|
|
|
TLSClientConfig: &tls.Config{
|
|
TLSClientConfig: &tls.Config{
|
|
@@ -128,29 +129,33 @@ func TestLoadHTMLGlobUsingTLS(t *testing.T) {
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
client := &http.Client{Transport: tr}
|
|
client := &http.Client{Transport: tr}
|
|
|
- res, err := client.Get("https://127.0.0.1:9999/test")
|
|
|
|
|
|
|
+ res, err := client.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
-
|
|
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestLoadHTMLGlobFromFuncMap(t *testing.T) {
|
|
func TestLoadHTMLGlobFromFuncMap(t *testing.T) {
|
|
|
- time.Now()
|
|
|
|
|
- td := setupHTMLGlob(t, DebugMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/raw")
|
|
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ DebugMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLGlob("./testdata/template/*")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/raw", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "Date: 2017/07/01\n", string(resp))
|
|
assert.Equal(t, "Date: 2017/07/01\n", string(resp))
|
|
|
-
|
|
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
func init() {
|
|
@@ -164,59 +169,77 @@ func TestCreateEngine(t *testing.T) {
|
|
|
assert.Empty(t, router.Handlers)
|
|
assert.Empty(t, router.Handlers)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// func TestLoadHTMLDebugMode(t *testing.T) {
|
|
|
|
|
-// router := New()
|
|
|
|
|
-// SetMode(DebugMode)
|
|
|
|
|
-// router.LoadHTMLGlob("*.testtmpl")
|
|
|
|
|
-// r := router.HTMLRender.(render.HTMLDebug)
|
|
|
|
|
-// assert.Empty(t, r.Files)
|
|
|
|
|
-// assert.Equal(t, "*.testtmpl", r.Glob)
|
|
|
|
|
-//
|
|
|
|
|
-// router.LoadHTMLFiles("index.html.testtmpl", "login.html.testtmpl")
|
|
|
|
|
-// r = router.HTMLRender.(render.HTMLDebug)
|
|
|
|
|
-// assert.Empty(t, r.Glob)
|
|
|
|
|
-// assert.Equal(t, []string{"index.html", "login.html"}, r.Files)
|
|
|
|
|
-// SetMode(TestMode)
|
|
|
|
|
-// }
|
|
|
|
|
-
|
|
|
|
|
-func TestLoadHTMLFiles(t *testing.T) {
|
|
|
|
|
- td := setupHTMLFiles(t, TestMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
|
|
|
|
+func TestLoadHTMLFilesTestMode(t *testing.T) {
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ TestMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLFiles("./testdata/template/hello.tmpl", "./testdata/template/raw.tmpl")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func TestLoadHTMLFiles2(t *testing.T) {
|
|
|
|
|
- td := setupHTMLFiles(t, DebugMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
|
|
|
|
+func TestLoadHTMLFilesDebugMode(t *testing.T) {
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ DebugMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLFiles("./testdata/template/hello.tmpl", "./testdata/template/raw.tmpl")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func TestLoadHTMLFiles3(t *testing.T) {
|
|
|
|
|
- td := setupHTMLFiles(t, ReleaseMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
|
|
|
|
+func TestLoadHTMLFilesReleaseMode(t *testing.T) {
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ ReleaseMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLFiles("./testdata/template/hello.tmpl", "./testdata/template/raw.tmpl")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestLoadHTMLFilesUsingTLS(t *testing.T) {
|
|
func TestLoadHTMLFilesUsingTLS(t *testing.T) {
|
|
|
- td := setupHTMLFiles(t, TestMode, true)
|
|
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ TestMode,
|
|
|
|
|
+ true,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLFiles("./testdata/template/hello.tmpl", "./testdata/template/raw.tmpl")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
// Use InsecureSkipVerify for avoiding `x509: certificate signed by unknown authority` error
|
|
// Use InsecureSkipVerify for avoiding `x509: certificate signed by unknown authority` error
|
|
|
tr := &http.Transport{
|
|
tr := &http.Transport{
|
|
|
TLSClientConfig: &tls.Config{
|
|
TLSClientConfig: &tls.Config{
|
|
@@ -224,28 +247,33 @@ func TestLoadHTMLFilesUsingTLS(t *testing.T) {
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
client := &http.Client{Transport: tr}
|
|
client := &http.Client{Transport: tr}
|
|
|
- res, err := client.Get("https://127.0.0.1:9999/test")
|
|
|
|
|
|
|
+ res, err := client.Get(fmt.Sprintf("%s/test", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
assert.Equal(t, "<h1>Hello world</h1>", string(resp))
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestLoadHTMLFilesFuncMap(t *testing.T) {
|
|
func TestLoadHTMLFilesFuncMap(t *testing.T) {
|
|
|
- time.Now()
|
|
|
|
|
- td := setupHTMLFiles(t, TestMode, false)
|
|
|
|
|
- res, err := http.Get("http://127.0.0.1:8888/raw")
|
|
|
|
|
|
|
+ ts := setupHTMLFiles(
|
|
|
|
|
+ t,
|
|
|
|
|
+ TestMode,
|
|
|
|
|
+ false,
|
|
|
|
|
+ func(router *Engine) {
|
|
|
|
|
+ router.LoadHTMLFiles("./testdata/template/hello.tmpl", "./testdata/template/raw.tmpl")
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+ defer ts.Close()
|
|
|
|
|
+
|
|
|
|
|
+ res, err := http.Get(fmt.Sprintf("%s/raw", ts.URL))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
fmt.Println(err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
resp, _ := ioutil.ReadAll(res.Body)
|
|
|
assert.Equal(t, "Date: 2017/07/01\n", string(resp))
|
|
assert.Equal(t, "Date: 2017/07/01\n", string(resp))
|
|
|
-
|
|
|
|
|
- td()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestAddRoute(t *testing.T) {
|
|
func TestAddRoute(t *testing.T) {
|