github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/framework/http/httprouter/routegroup_test.go (about)

     1  package httprouter
     2  
     3  import (
     4  	"net/http"
     5  	"testing"
     6  )
     7  
     8  func TestRouteGroupOfARouteGroup(t *testing.T) {
     9  	var get bool
    10  	router := New()
    11  	router.SaveMatchedRoutePath = false
    12  	foo := router.NewGroup("/foo") // creates /foo group
    13  	bar := foo.NewGroup("/bar")
    14  
    15  	bar.GET("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) {
    16  		get = true
    17  	})
    18  
    19  	w := new(mockResponseWriter)
    20  
    21  	r, _ := http.NewRequest("GET", "/foo/bar/GET", nil)
    22  	router.ServeHTTP(w, r)
    23  	if !get {
    24  		t.Error("routing GET /foo/bar/GET failed")
    25  	}
    26  
    27  }
    28  
    29  func TestRouteGroupAPI(t *testing.T) {
    30  	var get, head, options, post, put, patch, delete, handler, handlerFunc bool
    31  
    32  	httpHandler := handlerStruct{&handler}
    33  
    34  	router := New()
    35  	router.SaveMatchedRoutePath = false
    36  	group := router.NewGroup("/foo") // creates /foo group
    37  
    38  	group.GET("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) {
    39  		get = true
    40  	})
    41  	group.HEAD("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) {
    42  		head = true
    43  	})
    44  	group.OPTIONS("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) {
    45  		options = true
    46  	})
    47  	group.POST("/POST", func(w http.ResponseWriter, r *http.Request, _ Params) {
    48  		post = true
    49  	})
    50  	group.PUT("/PUT", func(w http.ResponseWriter, r *http.Request, _ Params) {
    51  		put = true
    52  	})
    53  	group.PATCH("/PATCH", func(w http.ResponseWriter, r *http.Request, _ Params) {
    54  		patch = true
    55  	})
    56  	group.DELETE("/DELETE", func(w http.ResponseWriter, r *http.Request, _ Params) {
    57  		delete = true
    58  	})
    59  	group.Handler("GET", "/Handler", httpHandler)
    60  	group.HandlerFunc("GET", "/HandlerFunc", func(w http.ResponseWriter, r *http.Request) {
    61  		handlerFunc = true
    62  	})
    63  
    64  	w := new(mockResponseWriter)
    65  
    66  	r, _ := http.NewRequest("GET", "/foo/GET", nil)
    67  	router.ServeHTTP(w, r)
    68  	if !get {
    69  		t.Error("routing /foo/GET failed")
    70  	}
    71  
    72  	r, _ = http.NewRequest("HEAD", "/foo/GET", nil)
    73  	router.ServeHTTP(w, r)
    74  	if !head {
    75  		t.Error("routing HEAD failed")
    76  	}
    77  
    78  	r, _ = http.NewRequest("OPTIONS", "/foo/GET", nil)
    79  	router.ServeHTTP(w, r)
    80  	if !options {
    81  		t.Error("routing OPTIONS failed")
    82  	}
    83  
    84  	r, _ = http.NewRequest("POST", "/foo/POST", nil)
    85  	router.ServeHTTP(w, r)
    86  	if !post {
    87  		t.Error("routing POST failed")
    88  	}
    89  
    90  	r, _ = http.NewRequest("PUT", "/foo/PUT", nil)
    91  	router.ServeHTTP(w, r)
    92  	if !put {
    93  		t.Error("routing PUT failed")
    94  	}
    95  
    96  	r, _ = http.NewRequest("PATCH", "/foo/PATCH", nil)
    97  	router.ServeHTTP(w, r)
    98  	if !patch {
    99  		t.Error("routing PATCH failed")
   100  	}
   101  
   102  	r, _ = http.NewRequest("DELETE", "/foo/DELETE", nil)
   103  	router.ServeHTTP(w, r)
   104  	if !delete {
   105  		t.Error("routing DELETE failed")
   106  	}
   107  
   108  	r, _ = http.NewRequest("GET", "/foo/Handler", nil)
   109  	router.ServeHTTP(w, r)
   110  	if !handler {
   111  		t.Error("routing Handler failed")
   112  	}
   113  
   114  	r, _ = http.NewRequest("GET", "/foo/HandlerFunc", nil)
   115  	router.ServeHTTP(w, r)
   116  	if !handlerFunc {
   117  		t.Error("routing HandlerFunc failed")
   118  	}
   119  }