github.com/gofiber/fiber/v2@v2.47.0/middleware/expvar/expvar_test.go (about) 1 package expvar 2 3 import ( 4 "bytes" 5 "io" 6 "net/http/httptest" 7 "testing" 8 9 "github.com/gofiber/fiber/v2" 10 "github.com/gofiber/fiber/v2/utils" 11 ) 12 13 func Test_Non_Expvar_Path(t *testing.T) { 14 t.Parallel() 15 app := fiber.New() 16 17 app.Use(New()) 18 19 app.Get("/", func(c *fiber.Ctx) error { 20 return c.SendString("escaped") 21 }) 22 23 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/", nil)) 24 utils.AssertEqual(t, nil, err) 25 utils.AssertEqual(t, 200, resp.StatusCode) 26 27 b, err := io.ReadAll(resp.Body) 28 utils.AssertEqual(t, nil, err) 29 utils.AssertEqual(t, "escaped", string(b)) 30 } 31 32 func Test_Expvar_Index(t *testing.T) { 33 t.Parallel() 34 app := fiber.New() 35 36 app.Use(New()) 37 38 app.Get("/", func(c *fiber.Ctx) error { 39 return c.SendString("escaped") 40 }) 41 42 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars", nil)) 43 utils.AssertEqual(t, nil, err) 44 utils.AssertEqual(t, 200, resp.StatusCode) 45 utils.AssertEqual(t, fiber.MIMEApplicationJSONCharsetUTF8, resp.Header.Get(fiber.HeaderContentType)) 46 47 b, err := io.ReadAll(resp.Body) 48 utils.AssertEqual(t, nil, err) 49 utils.AssertEqual(t, true, bytes.Contains(b, []byte("cmdline"))) 50 utils.AssertEqual(t, true, bytes.Contains(b, []byte("memstat"))) 51 } 52 53 func Test_Expvar_Filter(t *testing.T) { 54 t.Parallel() 55 app := fiber.New() 56 57 app.Use(New()) 58 59 app.Get("/", func(c *fiber.Ctx) error { 60 return c.SendString("escaped") 61 }) 62 63 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars?r=cmd", nil)) 64 utils.AssertEqual(t, nil, err) 65 utils.AssertEqual(t, 200, resp.StatusCode) 66 utils.AssertEqual(t, fiber.MIMEApplicationJSONCharsetUTF8, resp.Header.Get(fiber.HeaderContentType)) 67 68 b, err := io.ReadAll(resp.Body) 69 utils.AssertEqual(t, nil, err) 70 utils.AssertEqual(t, true, bytes.Contains(b, []byte("cmdline"))) 71 utils.AssertEqual(t, false, bytes.Contains(b, []byte("memstat"))) 72 } 73 74 func Test_Expvar_Other_Path(t *testing.T) { 75 t.Parallel() 76 app := fiber.New() 77 78 app.Use(New()) 79 80 app.Get("/", func(c *fiber.Ctx) error { 81 return c.SendString("escaped") 82 }) 83 84 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars/302", nil)) 85 utils.AssertEqual(t, nil, err) 86 utils.AssertEqual(t, 302, resp.StatusCode) 87 } 88 89 // go test -run Test_Expvar_Next 90 func Test_Expvar_Next(t *testing.T) { 91 t.Parallel() 92 app := fiber.New() 93 94 app.Use(New(Config{ 95 Next: func(_ *fiber.Ctx) bool { 96 return true 97 }, 98 })) 99 100 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/debug/vars", nil)) 101 utils.AssertEqual(t, nil, err) 102 utils.AssertEqual(t, 404, resp.StatusCode) 103 }