package expvar import ( "bytes" "io" "net/http/httptest" "testing" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/utils" ) func Test_Non_Expvar_Path(t *testing.T) { app := fiber.New() app.Use(New()) app.Get("/", func(c *fiber.Ctx) error { return c.SendString("escaped") }) resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/", nil)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, 200, resp.StatusCode) b, err := io.ReadAll(resp.Body) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, "escaped", string(b)) } func Test_Expvar_Index(t *testing.T) { app := fiber.New() app.Use(New()) app.Get("/", func(c *fiber.Ctx) error { return c.SendString("escaped") }) resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars", nil)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, 200, resp.StatusCode) utils.AssertEqual(t, fiber.MIMEApplicationJSONCharsetUTF8, resp.Header.Get(fiber.HeaderContentType)) b, err := io.ReadAll(resp.Body) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, true, bytes.Contains(b, []byte("cmdline"))) utils.AssertEqual(t, true, bytes.Contains(b, []byte("memstat"))) } func Test_Expvar_Filter(t *testing.T) { app := fiber.New() app.Use(New()) app.Get("/", func(c *fiber.Ctx) error { return c.SendString("escaped") }) resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars?r=cmd", nil)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, 200, resp.StatusCode) utils.AssertEqual(t, fiber.MIMEApplicationJSONCharsetUTF8, resp.Header.Get(fiber.HeaderContentType)) b, err := io.ReadAll(resp.Body) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, true, bytes.Contains(b, []byte("cmdline"))) utils.AssertEqual(t, false, bytes.Contains(b, []byte("memstat"))) } func Test_Expvar_Other_Path(t *testing.T) { app := fiber.New() app.Use(New()) app.Get("/", func(c *fiber.Ctx) error { return c.SendString("escaped") }) resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars/302", nil)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, 302, resp.StatusCode) } // go test -run Test_Expvar_Next func Test_Expvar_Next(t *testing.T) { t.Parallel() app := fiber.New() app.Use(New(Config{ Next: func(_ *fiber.Ctx) bool { return true }, })) resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars", nil)) utils.AssertEqual(t, nil, err) utils.AssertEqual(t, 404, resp.StatusCode) }