38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package httpx
|
|
|
|
import "net/http"
|
|
import "net/http/httptest"
|
|
import "testing"
|
|
|
|
func TestRouterMatchWithParams(t *testing.T) {
|
|
var router *Router
|
|
var recorder *httptest.ResponseRecorder
|
|
var req *http.Request
|
|
router = NewRouter()
|
|
router.Handle("GET", "/api/repos/:id", func(w http.ResponseWriter, _ *http.Request, params Params) {
|
|
if params["id"] != "abc" {
|
|
t.Fatalf("unexpected route param: %s", params["id"])
|
|
}
|
|
w.WriteHeader(http.StatusNoContent)
|
|
})
|
|
recorder = httptest.NewRecorder()
|
|
req = httptest.NewRequest(http.MethodGet, "/api/repos/abc", nil)
|
|
router.ServeHTTP(recorder, req)
|
|
if recorder.Code != http.StatusNoContent {
|
|
t.Fatalf("unexpected status: %d", recorder.Code)
|
|
}
|
|
}
|
|
|
|
func TestRouterNotFound(t *testing.T) {
|
|
var router *Router
|
|
var recorder *httptest.ResponseRecorder
|
|
var req *http.Request
|
|
router = NewRouter()
|
|
recorder = httptest.NewRecorder()
|
|
req = httptest.NewRequest(http.MethodGet, "/missing", nil)
|
|
router.ServeHTTP(recorder, req)
|
|
if recorder.Code != http.StatusNotFound {
|
|
t.Fatalf("expected 404, got %d", recorder.Code)
|
|
}
|
|
}
|