|
|
@@ -5,6 +5,7 @@
|
|
|
package gin
|
|
|
|
|
|
import (
|
|
|
+ "crypto/tls"
|
|
|
"fmt"
|
|
|
"html/template"
|
|
|
"io/ioutil"
|
|
|
@@ -21,9 +22,9 @@ func formatAsDate(t time.Time) string {
|
|
|
return fmt.Sprintf("%d/%02d/%02d", year, month, day)
|
|
|
}
|
|
|
|
|
|
-func setupHTMLFiles(t *testing.T) func() {
|
|
|
+func setupHTMLFiles(t *testing.T, mode string, tls bool) func() {
|
|
|
go func() {
|
|
|
- SetMode(TestMode)
|
|
|
+ SetMode(mode)
|
|
|
router := New()
|
|
|
router.Delims("{[{", "}]}")
|
|
|
router.SetFuncMap(template.FuncMap{
|
|
|
@@ -38,16 +39,21 @@ func setupHTMLFiles(t *testing.T) func() {
|
|
|
"now": time.Date(2017, 07, 01, 0, 0, 0, 0, time.UTC),
|
|
|
})
|
|
|
})
|
|
|
- router.Run(":8888")
|
|
|
+ if tls {
|
|
|
+ // these files generated by `go run $GOROOT/src/crypto/tls/generate_cert.go --host 127.0.0.1`
|
|
|
+ router.RunTLS(":9999", "./fixtures/testdata/cert.pem", "./fixtures/testdata/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) func() {
|
|
|
+func setupHTMLGlob(t *testing.T, mode string, tls bool) func() {
|
|
|
go func() {
|
|
|
- SetMode(DebugMode)
|
|
|
+ SetMode(mode)
|
|
|
router := New()
|
|
|
router.Delims("{[{", "}]}")
|
|
|
router.SetFuncMap(template.FuncMap{
|
|
|
@@ -62,16 +68,33 @@ func setupHTMLGlob(t *testing.T) func() {
|
|
|
"now": time.Date(2017, 07, 01, 0, 0, 0, 0, time.UTC),
|
|
|
})
|
|
|
})
|
|
|
- router.Run(":8888")
|
|
|
+ if tls {
|
|
|
+ // these files generated by `go run $GOROOT/src/crypto/tls/generate_cert.go --host 127.0.0.1`
|
|
|
+ router.RunTLS(":9999", "./fixtures/testdata/cert.pem", "./fixtures/testdata/key.pem")
|
|
|
+ } else {
|
|
|
+ router.Run(":8888")
|
|
|
+ }
|
|
|
}()
|
|
|
t.Log("waiting 1 second for server startup")
|
|
|
time.Sleep(1 * time.Second)
|
|
|
return func() {}
|
|
|
}
|
|
|
|
|
|
-//TODO
|
|
|
func TestLoadHTMLGlob(t *testing.T) {
|
|
|
- td := setupHTMLGlob(t)
|
|
|
+ td := setupHTMLGlob(t, DebugMode, false)
|
|
|
+ res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, _ := ioutil.ReadAll(res.Body)
|
|
|
+ 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")
|
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
|
@@ -83,9 +106,42 @@ func TestLoadHTMLGlob(t *testing.T) {
|
|
|
td()
|
|
|
}
|
|
|
|
|
|
+func TestLoadHTMLGlob3(t *testing.T) {
|
|
|
+ td := setupHTMLGlob(t, ReleaseMode, false)
|
|
|
+ res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, _ := ioutil.ReadAll(res.Body)
|
|
|
+ assert.Equal(t, "<h1>Hello world</h1>", string(resp[:]))
|
|
|
+
|
|
|
+ td()
|
|
|
+}
|
|
|
+
|
|
|
+func TestLoadHTMLGlobUsingTLS(t *testing.T) {
|
|
|
+ td := setupHTMLGlob(t, DebugMode, true)
|
|
|
+ // Use InsecureSkipVerify for avoiding `x509: certificate signed by unknown authority` error
|
|
|
+ tr := &http.Transport{
|
|
|
+ TLSClientConfig: &tls.Config{
|
|
|
+ InsecureSkipVerify: true,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ client := &http.Client{Transport: tr}
|
|
|
+ res, err := client.Get("https://127.0.0.1:9999/test")
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, _ := ioutil.ReadAll(res.Body)
|
|
|
+ assert.Equal(t, "<h1>Hello world</h1>", string(resp[:]))
|
|
|
+
|
|
|
+ td()
|
|
|
+}
|
|
|
+
|
|
|
func TestLoadHTMLGlobFromFuncMap(t *testing.T) {
|
|
|
time.Now()
|
|
|
- td := setupHTMLGlob(t)
|
|
|
+ td := setupHTMLGlob(t, DebugMode, false)
|
|
|
res, err := http.Get("http://127.0.0.1:8888/raw")
|
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
|
@@ -97,9 +153,6 @@ func TestLoadHTMLGlobFromFuncMap(t *testing.T) {
|
|
|
td()
|
|
|
}
|
|
|
|
|
|
-// func (engine *Engine) LoadHTMLFiles(files ...string) {
|
|
|
-// func (engine *Engine) RunTLS(addr string, cert string, key string) error {
|
|
|
-
|
|
|
func init() {
|
|
|
SetMode(TestMode)
|
|
|
}
|
|
|
@@ -127,7 +180,31 @@ func TestCreateEngine(t *testing.T) {
|
|
|
// }
|
|
|
|
|
|
func TestLoadHTMLFiles(t *testing.T) {
|
|
|
- td := setupHTMLFiles(t)
|
|
|
+ td := setupHTMLFiles(t, TestMode, false)
|
|
|
+ res, err := http.Get("http://127.0.0.1:8888/test")
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, _ := ioutil.ReadAll(res.Body)
|
|
|
+ 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")
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, _ := ioutil.ReadAll(res.Body)
|
|
|
+ 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")
|
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
|
@@ -138,9 +215,28 @@ func TestLoadHTMLFiles(t *testing.T) {
|
|
|
td()
|
|
|
}
|
|
|
|
|
|
+func TestLoadHTMLFilesUsingTLS(t *testing.T) {
|
|
|
+ td := setupHTMLFiles(t, TestMode, true)
|
|
|
+ // Use InsecureSkipVerify for avoiding `x509: certificate signed by unknown authority` error
|
|
|
+ tr := &http.Transport{
|
|
|
+ TLSClientConfig: &tls.Config{
|
|
|
+ InsecureSkipVerify: true,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ client := &http.Client{Transport: tr}
|
|
|
+ res, err := client.Get("https://127.0.0.1:9999/test")
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, _ := ioutil.ReadAll(res.Body)
|
|
|
+ assert.Equal(t, "<h1>Hello world</h1>", string(resp[:]))
|
|
|
+ td()
|
|
|
+}
|
|
|
+
|
|
|
func TestLoadHTMLFilesFuncMap(t *testing.T) {
|
|
|
time.Now()
|
|
|
- td := setupHTMLFiles(t)
|
|
|
+ td := setupHTMLFiles(t, TestMode, false)
|
|
|
res, err := http.Get("http://127.0.0.1:8888/raw")
|
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
|
@@ -152,10 +248,6 @@ func TestLoadHTMLFilesFuncMap(t *testing.T) {
|
|
|
td()
|
|
|
}
|
|
|
|
|
|
-func TestLoadHTMLReleaseMode(t *testing.T) {
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
func TestAddRoute(t *testing.T) {
|
|
|
router := New()
|
|
|
router.addRoute("GET", "/", HandlersChain{func(_ *Context) {}})
|