package wrouter import ( "io/ioutil" "net/http" "net/http/httptest" "testing" "git.aiterp.net/gisle/wrouter/auth" ) type testRoute struct { Name string } func (tr *testRoute) Handle(path string, w http.ResponseWriter, req *http.Request, user *auth.User) bool { w.WriteHeader(200) w.Write([]byte(tr.Name)) return true } func TestPaths(t *testing.T) { tr1 := testRoute{"Test Route 1"} tr2 := testRoute{"Test Route 2"} router := Router{} router.Route("/test1", &tr1) router.Route("/test2", &tr2) t.Run("It finds /test1", func(t *testing.T) { req := httptest.NewRequest("GET", "http://test.aiterp.net/test1", nil) w := httptest.NewRecorder() router.ServeHTTP(w, req) data, _ := ioutil.ReadAll(w.Body) if string(data) != "Test Route 1" { t.Error("Wrong content:", string(data)) t.Fail() } if w.Code != 200 { t.Error("Wrong code:", w.Code) t.Fail() } }) t.Run("It finds /test2", func(t *testing.T) { req := httptest.NewRequest("GET", "http://test.aiterp.net/test2", nil) w := httptest.NewRecorder() router.ServeHTTP(w, req) data, _ := ioutil.ReadAll(w.Body) if string(data) != "Test Route 2" { t.Error("Wrong content:", string(data)) t.Fail() } if w.Header().Get("X-Route-Index") != "1" { t.Error("Wrong index:", w.Code) t.Fail() } if w.Code != 200 { t.Error("Wrong code:", w.Code) t.Fail() } }) t.Run("It does not find /test3", func(t *testing.T) { req := httptest.NewRequest("GET", "http://test.aiterp.net/test3", nil) w := httptest.NewRecorder() router.ServeHTTP(w, req) if w.Code != 404 { t.Error("Wrong code:", w.Code) t.Fail() } }) }