@@ -16,6 +16,7 @@ import (
1616
1717 "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
1818 "github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
19+ "github.com/Azure/azure-sdk-for-go/sdk/internal/mock"
1920 "github.com/Azure/azure-sdk-for-go/sdk/internal/poller"
2021 "github.com/stretchr/testify/require"
2122)
@@ -173,3 +174,26 @@ func TestSynchronousCompletion(t *testing.T) {
173174 require .Equal (t , poller .StatusSucceeded , lp .CurState )
174175 require .True (t , lp .Done ())
175176}
177+
178+ func TestWithThrottling (t * testing.T ) {
179+ srv , close := mock .NewServer ()
180+ defer close ()
181+ srv .AppendResponse (mock .WithStatusCode (http .StatusTooManyRequests ))
182+ srv .AppendResponse (mock .WithStatusCode (http .StatusAccepted ))
183+ srv .AppendResponse (mock .WithStatusCode (http .StatusTooManyRequests ))
184+ srv .AppendResponse (mock .WithStatusCode (http .StatusOK ))
185+ resp := initialResponse ()
186+ resp .Header .Set (shared .HeaderLocation , srv .URL ())
187+ lp , err := New [struct {}](exported .NewPipeline (shared .TransportFunc (func (req * http.Request ) (* http.Response , error ) {
188+ return srv .Do (req )
189+ })), resp )
190+ require .NoError (t , err )
191+ respCount := 0
192+ for ! lp .Done () {
193+ _ , err = lp .Poll (context .Background ())
194+ require .NoError (t , err )
195+ respCount ++
196+ }
197+ require .EqualValues (t , 4 , respCount )
198+ require .EqualValues (t , poller .StatusSucceeded , lp .CurState )
199+ }
0 commit comments