func TestCustomErrors(t *testing.T) { api := iris.New() // first register the routes needed for _, r := range routesCustomErrors { if r.Register { api.HandleFunc(r.Method, r.Path, func(ctx *iris.Context) { ctx.EmitError(r.Status) }) } } // register the custom errors api.OnError(404, func(ctx *iris.Context) { ctx.Write("%s", notFoundMessage) }) api.OnError(500, func(ctx *iris.Context) { ctx.Write("%s", internalServerMessage) }) // create httpexpect instance that will call fasthtpp.RequestHandler directly e := httpexpect.WithConfig(httpexpect.Config{ Reporter: httpexpect.NewAssertReporter(t), Client: fasthttpexpect.NewBinder(api.NoListen().Handler), }) // run the tests for _, r := range routesCustomErrors { e.Request(r.Method, r.RequestPath). Expect(). Status(r.Status).Body().Equal(r.Body) } }
func TestRouter(t *testing.T) { api := iris.New() for idx := range routes { r := routes[idx] if r.Register { api.HandleFunc(r.Method, r.Path, func(ctx *iris.Context) { ctx.SetStatusCode(r.Status) if r.Params != nil && len(r.Params) > 0 { ctx.SetBodyString(ctx.Params.String()) } else if r.UrlParams != nil && len(r.UrlParams) > 0 { if len(r.UrlParams) != len(ctx.URLParams()) { t.Fatalf("Error when comparing length of url parameters %d != %d", len(r.UrlParams), len(ctx.URLParams())) } paramsKeyVal := "" for idxp, p := range r.UrlParams { val := ctx.URLParam(p.Key) paramsKeyVal += p.Key + "=" + val + "," if idxp == len(r.UrlParams)-1 { paramsKeyVal = paramsKeyVal[0 : len(paramsKeyVal)-1] } } ctx.SetBodyString(paramsKeyVal) } else { ctx.SetBodyString(r.Body) } }) } } // create httpexpect instance that will call fasthtpp.RequestHandler directly e := httpexpect.WithConfig(httpexpect.Config{ Reporter: httpexpect.NewAssertReporter(t), Client: fasthttpexpect.NewBinder(api.NoListen().Handler), }) // run the tests (1) for idx := range routes { r := routes[idx] e.Request(r.Method, r.RequestPath). Expect(). Status(r.Status).Body().Equal(r.Body) } }
func TestPathEscape(t *testing.T) { api := iris.New() api.Get("/details/:name", func(ctx *iris.Context) { name := ctx.Param("name") highlight := ctx.URLParam("highlight") ctx.Text(iris.StatusOK, fmt.Sprintf("name=%s,highlight=%s", name, highlight)) }) e := httpexpect.WithConfig(httpexpect.Config{Reporter: httpexpect.NewAssertReporter(t), Client: fasthttpexpect.NewBinder(api.NoListen().Handler)}) e.Request("GET", "/details/Sakamoto desu ga?highlight=text").Expect().Status(iris.StatusOK).Body().Equal("name=Sakamoto desu ga,highlight=text") }