@@ -25,10 +25,10 @@ func TestRetryableTransport(t *testing.T) {
2525 reset := fmt .Sprintf ("%d" , time .Now ().Add (1 * time .Second ).Unix ())
2626 rw .Header ().Set ("X-RateLimit-Reset" , reset )
2727 rw .WriteHeader (http .StatusTooManyRequests )
28- _ , _ = rw .Write ([]byte ("rate limited" ))
28+ rw .Write ([]byte ("rate limited" ))
2929 } else {
3030 rw .WriteHeader (http .StatusOK )
31- _ , _ = rw .Write ([]byte ("ok" ))
31+ rw .Write ([]byte ("ok" ))
3232 }
3333 }))
3434 defer server .Close ()
@@ -72,7 +72,7 @@ func TestRetryableTransportExceedsMaxAttempts(t *testing.T) {
7272 reset := fmt .Sprintf ("%d" , time .Now ().Add (1 * time .Second ).Unix ())
7373 rw .Header ().Set ("X-RateLimit-Reset" , reset )
7474 rw .WriteHeader (http .StatusTooManyRequests )
75- _ , _ = rw .Write ([]byte ("rate limited" ))
75+ rw .Write ([]byte ("rate limited" ))
7676 }))
7777 defer server .Close ()
7878
@@ -111,7 +111,7 @@ func TestRetryableWithDifferentError(t *testing.T) {
111111 attempts ++
112112
113113 rw .WriteHeader (http .StatusNotFound )
114- _ , _ = rw .Write ([]byte ("not found" ))
114+ rw .Write ([]byte ("not found" ))
115115 }))
116116 defer server .Close ()
117117
@@ -142,3 +142,39 @@ func TestRetryableWithDifferentError(t *testing.T) {
142142 require .Error (t , err )
143143 require .Equal (t , 1 , attempts )
144144}
145+
146+ func TestRetryableTransport_POST (t * testing.T ) {
147+ server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
148+ rw .WriteHeader (http .StatusCreated )
149+ rw .Write ([]byte ("test result" ))
150+ }))
151+ defer server .Close ()
152+
153+ rwrtr := runtime .ClientRequestWriterFunc (func (req runtime.ClientRequest , _ strfmt.Registry ) error {
154+ return req .SetBodyParam ("test result" )
155+ })
156+
157+ hu , _ := url .Parse (server .URL )
158+ rt := NewRetryableTransport (httptransport .New (hu .Host , "/" , []string {"http" }), 2 )
159+
160+ result , err := rt .Submit (& runtime.ClientOperation {
161+ ID : "createSite" ,
162+ Method : "POST" ,
163+ PathPattern : "/" ,
164+ Params : rwrtr ,
165+ Reader : runtime .ClientResponseReaderFunc (func (response runtime.ClientResponse , consumer runtime.Consumer ) (interface {}, error ) {
166+ if response .Code () == 201 {
167+ var result string
168+ if err := consumer .Consume (response .Body (), & result ); err != nil {
169+ return nil , err
170+ }
171+ return result , nil
172+ }
173+ return nil , errors .New ("Generic error" )
174+ }),
175+ })
176+
177+ require .NoError (t , err )
178+ actual := result .(string )
179+ require .EqualValues (t , "test result" , actual )
180+ }
0 commit comments