TestRequestID checks request ID generation and validation
()
| 181 | |
| 182 | // TestRequestID checks request ID generation and validation |
| 183 | func (s *RouterTestSuite) TestRequestID() { |
| 184 | handler := func(reqID string, rw server.ResponseWriter, req *http.Request) *server.Error { |
| 185 | rw.WriteHeader(http.StatusOK) |
| 186 | return nil |
| 187 | } |
| 188 | |
| 189 | s.router.GET("/test", handler) |
| 190 | |
| 191 | // Test request ID passthrough (if present) |
| 192 | req := httptest.NewRequest(http.MethodGet, "/api/test", nil) |
| 193 | req.Header.Set(httpheaders.XRequestID, "valid-id-123") |
| 194 | rw := httptest.NewRecorder() |
| 195 | |
| 196 | s.router.ServeHTTP(rw, req) |
| 197 | |
| 198 | s.Require().Equal("valid-id-123", rw.Header().Get(httpheaders.XRequestID)) |
| 199 | |
| 200 | // Test invalid request ID (should generate a new one) |
| 201 | req = httptest.NewRequest(http.MethodGet, "/api/test", nil) |
| 202 | req.Header.Set(httpheaders.XRequestID, "invalid id with spaces!") |
| 203 | rw = httptest.NewRecorder() |
| 204 | |
| 205 | s.router.ServeHTTP(rw, req) |
| 206 | |
| 207 | generatedID := rw.Header().Get(httpheaders.XRequestID) |
| 208 | s.Require().NotEqual("invalid id with spaces!", generatedID) |
| 209 | s.Require().NotEmpty(generatedID) |
| 210 | |
| 211 | // Test no request ID (should generate a new one) |
| 212 | req = httptest.NewRequest(http.MethodGet, "/api/test", nil) |
| 213 | rw = httptest.NewRecorder() |
| 214 | |
| 215 | s.router.ServeHTTP(rw, req) |
| 216 | |
| 217 | generatedID = rw.Header().Get(httpheaders.XRequestID) |
| 218 | s.Require().NotEmpty(generatedID) |
| 219 | s.Require().Regexp(`^[A-Za-z0-9_\-]+$`, generatedID) |
| 220 | } |
| 221 | |
| 222 | // TestLambdaRequestIDExtraction checks AWS lambda request id extraction |
| 223 | func (s *RouterTestSuite) TestLambdaRequestIDExtraction() { |
nothing calls this directly
no test coverage detected