github.com/gofiber/fiber/v2@v2.47.0/middleware/recover/recover_test.go (about) 1 package recover //nolint:predeclared // TODO: Rename to some non-builtin 2 3 import ( 4 "net/http/httptest" 5 "testing" 6 7 "github.com/gofiber/fiber/v2" 8 "github.com/gofiber/fiber/v2/utils" 9 ) 10 11 // go test -run Test_Recover 12 func Test_Recover(t *testing.T) { 13 t.Parallel() 14 app := fiber.New(fiber.Config{ 15 ErrorHandler: func(c *fiber.Ctx, err error) error { 16 utils.AssertEqual(t, "Hi, I'm an error!", err.Error()) 17 return c.SendStatus(fiber.StatusTeapot) 18 }, 19 }) 20 21 app.Use(New()) 22 23 app.Get("/panic", func(c *fiber.Ctx) error { 24 panic("Hi, I'm an error!") 25 }) 26 27 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/panic", nil)) 28 utils.AssertEqual(t, nil, err) 29 utils.AssertEqual(t, fiber.StatusTeapot, resp.StatusCode) 30 } 31 32 // go test -run Test_Recover_Next 33 func Test_Recover_Next(t *testing.T) { 34 t.Parallel() 35 app := fiber.New() 36 app.Use(New(Config{ 37 Next: func(_ *fiber.Ctx) bool { 38 return true 39 }, 40 })) 41 42 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/", nil)) 43 utils.AssertEqual(t, nil, err) 44 utils.AssertEqual(t, fiber.StatusNotFound, resp.StatusCode) 45 } 46 47 func Test_Recover_EnableStackTrace(t *testing.T) { 48 t.Parallel() 49 app := fiber.New() 50 app.Use(New(Config{ 51 EnableStackTrace: true, 52 })) 53 54 app.Get("/panic", func(c *fiber.Ctx) error { 55 panic("Hi, I'm an error!") 56 }) 57 58 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/panic", nil)) 59 utils.AssertEqual(t, nil, err) 60 utils.AssertEqual(t, fiber.StatusInternalServerError, resp.StatusCode) 61 }