@@ -147,6 +147,34 @@ func TestBridgedMiddleware_RedactsSensitiveResponseHeaders(t *testing.T) {
147147 require .Contains (t , content , "X-Request-Id: req-123" )
148148}
149149
150+ func TestBridgedMiddleware_WritesErrorFile_WhenNextFails (t * testing.T ) {
151+ t .Parallel ()
152+
153+ tmpDir := t .TempDir ()
154+ logger := slogtest .Make (t , & slogtest.Options {IgnoreErrors : false }).Leveled (slog .LevelDebug )
155+ clk := quartz .NewMock (t )
156+ interceptionID := uuid .New ()
157+
158+ middleware := NewBridgeMiddleware (tmpDir , "openai" , "gpt-4" , interceptionID , logger , clk )
159+ require .NotNil (t , middleware )
160+
161+ req , err := http .NewRequestWithContext (t .Context (), http .MethodPost , "https://api.openai.com/v1/chat/completions" , bytes .NewReader ([]byte (`{}` )))
162+ require .NoError (t , err )
163+
164+ upstreamErr := io .ErrUnexpectedEOF
165+ resp , err := middleware (req , func (_ * http.Request ) (* http.Response , error ) { //nolint:bodyclose // resp is nil on error
166+ return nil , upstreamErr
167+ })
168+ require .ErrorIs (t , err , upstreamErr )
169+ require .Nil (t , resp )
170+
171+ modelDir := filepath .Join (tmpDir , "openai" , "gpt-4" )
172+ errDumpPath := findDumpFile (t , modelDir , SuffixError )
173+ content , readErr := os .ReadFile (errDumpPath )
174+ require .NoError (t , readErr )
175+ require .Contains (t , string (content ), upstreamErr .Error ())
176+ }
177+
150178func TestBridgedMiddleware_EmptyBaseDir_ReturnsNil (t * testing.T ) {
151179 t .Parallel ()
152180
@@ -365,6 +393,12 @@ func TestPassthroughMiddleware(t *testing.T) {
365393 resp , err := rt .RoundTrip (req ) //nolint:bodyclose // resp is nil on error
366394 require .ErrorIs (t , err , innerErr )
367395 require .Nil (t , resp )
396+
397+ passthroughDir := filepath .Join (tmpDir , "openai" , "passthrough" )
398+ errDumpPath := findDumpFile (t , passthroughDir , SuffixError )
399+ content , readErr := os .ReadFile (errDumpPath )
400+ require .NoError (t , readErr )
401+ require .Contains (t , string (content ), innerErr .Error ())
368402 })
369403
370404 t .Run ("dumps_request_and_response" , func (t * testing.T ) {
0 commit comments