|  | 
| 3 | 3 | 
 | 
| 4 | 4 | using System; | 
| 5 | 5 | using System.Collections.Generic; | 
|  | 6 | +using System.Linq; | 
| 6 | 7 | using System.Net; | 
| 7 | 8 | using System.Net.Http; | 
| 8 | 9 | using System.Threading.Tasks; | 
| @@ -286,6 +287,77 @@ public void AddResilienceHandler_AuthorityByCustomSelector_NotValidated() | 
| 286 | 287 |         Assert.NotNull(factory.CreateClient("my-client")); | 
| 287 | 288 |     } | 
| 288 | 289 | 
 | 
|  | 290 | +    [Fact] | 
|  | 291 | +    public void RemoveAllResilienceHandlers_ArgumentValidation() | 
|  | 292 | +    { | 
|  | 293 | +        var services = new ServiceCollection(); | 
|  | 294 | +        IHttpClientBuilder? builder = null; | 
|  | 295 | +        Assert.Throws<ArgumentNullException>(() => builder!.RemoveAllResilienceHandlers()); | 
|  | 296 | +    } | 
|  | 297 | + | 
|  | 298 | +    [Fact] | 
|  | 299 | +    public void RemoveAllResilienceHandlers_EnsureHandlersRemoved() | 
|  | 300 | +    { | 
|  | 301 | +        var services = new ServiceCollection(); | 
|  | 302 | + | 
|  | 303 | +        IHttpClientBuilder? builder = services.AddHttpClient("custom"); | 
|  | 304 | + | 
|  | 305 | +        builder.AddStandardResilienceHandler(); | 
|  | 306 | + | 
|  | 307 | +        builder.ConfigureAdditionalHttpMessageHandlers((handlers, _) => | 
|  | 308 | +        { | 
|  | 309 | +            Assert.Single(handlers); | 
|  | 310 | +        }); | 
|  | 311 | + | 
|  | 312 | +        builder.RemoveAllResilienceHandlers(); | 
|  | 313 | + | 
|  | 314 | +        builder.ConfigureAdditionalHttpMessageHandlers((handlers, _) => | 
|  | 315 | +        { | 
|  | 316 | +            Assert.Empty(handlers); | 
|  | 317 | +        }); | 
|  | 318 | + | 
|  | 319 | +        using ServiceProvider serviceProvider = services.BuildServiceProvider(); | 
|  | 320 | +        serviceProvider.GetRequiredService<IHttpClientFactory>().CreateClient("custom"); | 
|  | 321 | +    } | 
|  | 322 | + | 
|  | 323 | +    [Fact] | 
|  | 324 | +    public void RemoveAllResilienceHandlers_AddHandlersAfterRemoval() | 
|  | 325 | +    { | 
|  | 326 | +        var services = new ServiceCollection(); | 
|  | 327 | + | 
|  | 328 | +        IHttpClientBuilder? builder = services.AddHttpClient("custom"); | 
|  | 329 | +        builder.RemoveAllResilienceHandlers().AddStandardResilienceHandler(); | 
|  | 330 | +        builder.ConfigureAdditionalHttpMessageHandlers((handlers, _) => | 
|  | 331 | +        { | 
|  | 332 | +            Assert.Single(handlers); | 
|  | 333 | +        }); | 
|  | 334 | + | 
|  | 335 | +        using ServiceProvider serviceProvider = services.BuildServiceProvider(); | 
|  | 336 | +        serviceProvider.GetRequiredService<IHttpClientFactory>().CreateClient("custom"); | 
|  | 337 | +    } | 
|  | 338 | + | 
|  | 339 | +    [Fact] | 
|  | 340 | +    public void RemoveAllResilienceHandlers_EnsureOnlyResilienceHandlersRemoved() | 
|  | 341 | +    { | 
|  | 342 | +        var services = new ServiceCollection(); | 
|  | 343 | + | 
|  | 344 | +        IHttpClientBuilder? builder = services.AddHttpClient("custom"); | 
|  | 345 | + | 
|  | 346 | +        builder.AddHttpMessageHandler(() => new TestHandlerStub(HttpStatusCode.OK)); | 
|  | 347 | +        builder.AddStandardResilienceHandler(); | 
|  | 348 | + | 
|  | 349 | +        builder.RemoveAllResilienceHandlers(); | 
|  | 350 | + | 
|  | 351 | +        builder.ConfigureAdditionalHttpMessageHandlers((handlers, _) => | 
|  | 352 | +        { | 
|  | 353 | +            Assert.Single(handlers); | 
|  | 354 | +            Assert.Equal(typeof(TestHandlerStub), handlers.First().GetType()); | 
|  | 355 | +        }); | 
|  | 356 | + | 
|  | 357 | +        using ServiceProvider serviceProvider = services.BuildServiceProvider(); | 
|  | 358 | +        serviceProvider.GetRequiredService<IHttpClientFactory>().CreateClient("custom"); | 
|  | 359 | +    } | 
|  | 360 | + | 
| 289 | 361 |     private void ConfigureBuilder(ResiliencePipelineBuilder<HttpResponseMessage> builder) => builder.AddTimeout(TimeSpan.FromSeconds(1)); | 
| 290 | 362 | 
 | 
| 291 | 363 |     private class TestMetricsEnricher : MeteringEnricher | 
|  | 
0 commit comments