@@ -312,3 +312,44 @@ func TestWriteApiErrorHeaders(t *testing.T) {
312
312
wg .Wait ()
313
313
assert .Equal (t , calls , 3 )
314
314
}
315
+
316
+ func TestWriteErrorHeaderToString (t * testing.T ) {
317
+ header := ihttp.Header {
318
+ "Date" : []string {"2024-08-07T12:00:00.009" },
319
+ "Content-Length" : []string {"12" },
320
+ "Content-Type" : []string {"application/json" , "encoding UTF-8" },
321
+ "X-Test-Value1" : []string {"SaturnV" },
322
+ "X-Test-Value2" : []string {"Apollo11" },
323
+ "Retry-After" : []string {"2044" },
324
+ "Trace-Id" : []string {"123456789ABCDEF0" },
325
+ }
326
+
327
+ err := http.Error {
328
+ StatusCode : ihttp .StatusBadRequest ,
329
+ Code : "bad request" ,
330
+ Message : "this is just a test" ,
331
+ Err : nil ,
332
+ RetryAfter : 2044 ,
333
+ Header : header ,
334
+ }
335
+
336
+ fullString := err .HeaderToString ([]string {})
337
+
338
+ // write order is not guaranteed
339
+ assert .Contains (t , fullString , "Date: 2024-08-07T12:00:00.009" )
340
+ assert .Contains (t , fullString , "Content-Length: 12" )
341
+ assert .Contains (t , fullString , "Content-Type: application/json" )
342
+ assert .Contains (t , fullString , "X-Test-Value1: SaturnV" )
343
+ assert .Contains (t , fullString , "X-Test-Value2: Apollo11" )
344
+ assert .Contains (t , fullString , "Retry-After: 2044" )
345
+ assert .Contains (t , fullString , "Trace-Id: 123456789ABCDEF0" )
346
+
347
+ filterString := err .HeaderToString ([]string {"date" , "trace-id" , "x-test-value1" , "x-test-value2" })
348
+
349
+ // write order will follow filter arguments
350
+ assert .Equal (t , filterString ,
351
+ "Date: 2024-08-07T12:00:00.009\n Trace-Id: 123456789ABCDEF0\n X-Test-Value1: SaturnV\n X-Test-Value2: Apollo11\n " ,
352
+ )
353
+ assert .NotContains (t , filterString , "Content-Type: application/json" )
354
+ assert .NotContains (t , filterString , "Retry-After: 2044" )
355
+ }
0 commit comments