@@ -823,3 +823,58 @@ func TestResetMultipartReaders(t *testing.T) {
823823 assertEqual (t , 500 , resp .StatusCode ())
824824 assertNil (t , err )
825825}
826+
827+ func TestResetMultipartFieldReaderSeekStartError (t * testing.T ) {
828+ ts := createFilePostServer (t )
829+ defer ts .Close ()
830+
831+ testSeeker := & failingSeeker {
832+ bytes .NewReader ([]byte ("test" )),
833+ }
834+
835+ c := dc ().
836+ SetRetryCount (2 ).
837+ SetTimeout (time .Second * 3 ).
838+ SetRetryResetReaders (true ).
839+ AddRetryAfterErrorCondition ()
840+
841+ resp , err := c .R ().
842+ SetMultipartField ("file" , "audio.wav" , "audio/wav" , testSeeker ).
843+ Post (ts .URL + "/set-reset-multipart-readers-test" )
844+
845+ assertEqual (t , 500 , resp .StatusCode ())
846+ assertEqual (t , err .Error (), errSeekFailure .Error ())
847+ }
848+
849+ func TestResetMultipartFieldReaders (t * testing.T ) {
850+ ts := createFilePostServer (t )
851+ defer ts .Close ()
852+
853+ str := "test"
854+ buf := []byte (str )
855+
856+ bufReader := bytes .NewReader (buf )
857+ bufCpy := make ([]byte , len (buf ))
858+
859+ c := dc ().
860+ SetRetryCount (2 ).
861+ SetTimeout (time .Second * 3 ).
862+ SetRetryResetReaders (true ).
863+ AddRetryAfterErrorCondition ().
864+ AddRetryHook (
865+ func (response * Response , _ error ) {
866+ read , err := bufReader .Read (bufCpy )
867+
868+ assertNil (t , err )
869+ assertEqual (t , len (buf ), read )
870+ assertEqual (t , str , string (bufCpy ))
871+ },
872+ )
873+
874+ resp , err := c .R ().
875+ SetMultipartField ("file" , "audio.wav" , "audio/wav" , bufReader ).
876+ Post (ts .URL + "/set-reset-multipart-readers-test" )
877+
878+ assertEqual (t , 500 , resp .StatusCode ())
879+ assertNil (t , err )
880+ }
0 commit comments