github.com/gofiber/fiber/v2@v2.47.0/middleware/requestid/requestid_test.go (about) 1 package requestid 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_RequestID 12 func Test_RequestID(t *testing.T) { 13 t.Parallel() 14 app := fiber.New() 15 16 app.Use(New()) 17 18 app.Get("/", func(c *fiber.Ctx) error { 19 return c.SendString("Hello, World 👋!") 20 }) 21 22 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/", nil)) 23 utils.AssertEqual(t, nil, err) 24 utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode) 25 26 reqid := resp.Header.Get(fiber.HeaderXRequestID) 27 utils.AssertEqual(t, 36, len(reqid)) 28 29 req := httptest.NewRequest(fiber.MethodGet, "/", nil) 30 req.Header.Add(fiber.HeaderXRequestID, reqid) 31 32 resp, err = app.Test(req) 33 utils.AssertEqual(t, nil, err) 34 utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode) 35 utils.AssertEqual(t, reqid, resp.Header.Get(fiber.HeaderXRequestID)) 36 } 37 38 // go test -run Test_RequestID_Next 39 func Test_RequestID_Next(t *testing.T) { 40 t.Parallel() 41 app := fiber.New() 42 app.Use(New(Config{ 43 Next: func(_ *fiber.Ctx) bool { 44 return true 45 }, 46 })) 47 48 resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/", nil)) 49 utils.AssertEqual(t, nil, err) 50 utils.AssertEqual(t, resp.Header.Get(fiber.HeaderXRequestID), "") 51 utils.AssertEqual(t, fiber.StatusNotFound, resp.StatusCode) 52 } 53 54 // go test -run Test_RequestID_Locals 55 func Test_RequestID_Locals(t *testing.T) { 56 t.Parallel() 57 reqID := "ThisIsARequestId" 58 type ContextKey int 59 const requestContextKey ContextKey = iota 60 61 app := fiber.New() 62 app.Use(New(Config{ 63 Generator: func() string { 64 return reqID 65 }, 66 ContextKey: requestContextKey, 67 })) 68 69 var ctxVal string 70 71 app.Use(func(c *fiber.Ctx) error { 72 ctxVal = c.Locals(requestContextKey).(string) //nolint:forcetypeassert,errcheck // We always store a string in here 73 return c.Next() 74 }) 75 76 _, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/", nil)) 77 utils.AssertEqual(t, nil, err) 78 utils.AssertEqual(t, reqID, ctxVal) 79 }