@@ -57,30 +57,30 @@ func TestCanResume(t *testing.T) {
5757}
5858
5959func TestNew (t * testing.T ) {
60- poller , err := New [struct {}](exported.Pipeline {}, nil , "" )
60+ poller , err := New [struct {}](exported.Pipeline {}, nil , "" , "" )
6161 require .NoError (t , err )
6262 require .Empty (t , poller .CurState )
6363
64- poller , err = New [struct {}](exported.Pipeline {}, & http.Response {Header : http.Header {}}, "" )
64+ poller , err = New [struct {}](exported.Pipeline {}, & http.Response {Header : http.Header {}}, "" , "" )
6565 require .Error (t , err )
6666 require .Nil (t , poller )
6767
6868 resp := initialResponse (http .MethodPut , http .NoBody )
6969 resp .Header .Set (shared .HeaderOperationLocation , "this is an invalid polling URL" )
70- poller , err = New [struct {}](exported.Pipeline {}, resp , "" )
70+ poller , err = New [struct {}](exported.Pipeline {}, resp , "" , "" )
7171 require .Error (t , err )
7272 require .Nil (t , poller )
7373
7474 resp = initialResponse (http .MethodPut , http .NoBody )
7575 resp .Header .Set (shared .HeaderOperationLocation , fakePollingURL )
7676 resp .Header .Set (shared .HeaderLocation , "this is an invalid polling URL" )
77- poller , err = New [struct {}](exported.Pipeline {}, resp , "" )
77+ poller , err = New [struct {}](exported.Pipeline {}, resp , "" , "" )
7878 require .Error (t , err )
7979 require .Nil (t , poller )
8080
8181 resp = initialResponse (http .MethodPut , strings .NewReader (`{ "status": "Updating" }` ))
8282 resp .Header .Set (shared .HeaderOperationLocation , fakePollingURL )
83- poller , err = New [struct {}](exported.Pipeline {}, resp , "" )
83+ poller , err = New [struct {}](exported.Pipeline {}, resp , "" , "" )
8484 require .NoError (t , err )
8585 require .Equal (t , "Updating" , poller .CurState )
8686 require .False (t , poller .Done ())
@@ -108,7 +108,7 @@ func TestFinalStateViaLocation(t *testing.T) {
108108 } else {
109109 return nil , fmt .Errorf ("test bug, unhandled URL %s" , surl )
110110 }
111- })), resp , pollers .FinalStateViaLocation )
111+ })), resp , pollers .FinalStateViaLocation , "" )
112112 require .NoError (t , err )
113113 require .False (t , poller .Done ())
114114 resp , err = poller .Poll (context .Background ())
@@ -129,7 +129,28 @@ func TestFinalStateViaOperationLocationWithPost(t *testing.T) {
129129 StatusCode : http .StatusOK ,
130130 Body : io .NopCloser (strings .NewReader (`{ "status": "succeeded", "result": { "shape": "rhombus" } }` )),
131131 }, nil
132- })), resp , pollers .FinalStateViaOpLocation )
132+ })), resp , pollers .FinalStateViaOpLocation , "result" )
133+ require .NoError (t , err )
134+ require .False (t , poller .Done ())
135+ resp , err = poller .Poll (context .Background ())
136+ require .NoError (t , err )
137+ require .Equal (t , http .StatusOK , resp .StatusCode )
138+ require .True (t , poller .Done ())
139+ var result widget
140+ err = poller .Result (context .Background (), & result )
141+ require .NoError (t , err )
142+ require .Equal (t , "rhombus" , result .Shape )
143+ }
144+
145+ func TestFinalStateViaOperationLocationWithPostNoResultPath (t * testing.T ) {
146+ resp := initialResponse (http .MethodPost , strings .NewReader (`{ "status": "Updating" }` ))
147+ resp .Header .Set (shared .HeaderOperationLocation , fakePollingURL )
148+ poller , err := New [widget ](exported .NewPipeline (shared .TransportFunc (func (req * http.Request ) (* http.Response , error ) {
149+ return & http.Response {
150+ StatusCode : http .StatusOK ,
151+ Body : io .NopCloser (strings .NewReader (`{ "status": "succeeded", "shape": "rhombus" }` )),
152+ }, nil
153+ })), resp , pollers .FinalStateViaOpLocation , "" )
133154 require .NoError (t , err )
134155 require .False (t , poller .Done ())
135156 resp , err = poller .Poll (context .Background ())
@@ -159,7 +180,7 @@ func TestFinalStateViaResourceLocation(t *testing.T) {
159180 } else {
160181 return nil , fmt .Errorf ("test bug, unhandled URL %s" , surl )
161182 }
162- })), resp , pollers .FinalStateViaLocation )
183+ })), resp , pollers .FinalStateViaLocation , "" )
163184 require .NoError (t , err )
164185 require .False (t , poller .Done ())
165186 resp , err = poller .Poll (context .Background ())
@@ -189,7 +210,7 @@ func TestResultForPatch(t *testing.T) {
189210 } else {
190211 return nil , fmt .Errorf ("test bug, unhandled URL %s" , surl )
191212 }
192- })), resp , "" )
213+ })), resp , "" , "" )
193214 require .NoError (t , err )
194215 require .False (t , poller .Done ())
195216 resp , err = poller .Poll (context .Background ())
@@ -220,7 +241,7 @@ func TestPostWithLocation(t *testing.T) {
220241 } else {
221242 return nil , fmt .Errorf ("test bug, unhandled URL %s" , surl )
222243 }
223- })), resp , "" )
244+ })), resp , "" , "" )
224245 require .NoError (t , err )
225246 require .False (t , poller .Done ())
226247 resp , err = poller .Poll (context .Background ())
@@ -241,7 +262,7 @@ func TestOperationFailed(t *testing.T) {
241262 StatusCode : http .StatusOK ,
242263 Body : io .NopCloser (strings .NewReader (`{ "status": "Failed", "error": { "code": "InvalidSomething" } }` )),
243264 }, nil
244- })), resp , pollers .FinalStateViaLocation )
265+ })), resp , pollers .FinalStateViaLocation , "" )
245266 require .NoError (t , err )
246267 require .False (t , poller .Done ())
247268 resp , err = poller .Poll (context .Background ())
@@ -261,7 +282,7 @@ func TestPollFailed(t *testing.T) {
261282 resp .Header .Set (shared .HeaderOperationLocation , fakePollingURL )
262283 poller , err := New [widget ](exported .NewPipeline (shared .TransportFunc (func (req * http.Request ) (* http.Response , error ) {
263284 return nil , errors .New ("failed" )
264- })), resp , pollers .FinalStateViaLocation )
285+ })), resp , pollers .FinalStateViaLocation , "" )
265286 require .NoError (t , err )
266287 require .False (t , poller .Done ())
267288 resp , err = poller .Poll (context .Background ())
@@ -279,7 +300,7 @@ func TestPollError(t *testing.T) {
279300 Header : http.Header {},
280301 Body : io .NopCloser (strings .NewReader (`{ "error": { "code": "NotFound", "message": "the item doesn't exist" } }` )),
281302 }, nil
282- })), resp , pollers .FinalStateViaLocation )
303+ })), resp , pollers .FinalStateViaLocation , "" )
283304 require .NoError (t , err )
284305 require .False (t , poller .Done ())
285306 resp , err = poller .Poll (context .Background ())
@@ -299,7 +320,7 @@ func TestMissingStatus(t *testing.T) {
299320 StatusCode : http .StatusOK ,
300321 Body : io .NopCloser (strings .NewReader (`{ "shape": "square" }` )),
301322 }, nil
302- })), resp , "" )
323+ })), resp , "" , "" )
303324 require .NoError (t , err )
304325 require .False (t , poller .Done ())
305326 resp , err = poller .Poll (context .Background ())
0 commit comments