|
| 1 | +using Microsoft.Extensions.Http; |
| 2 | + |
| 3 | +namespace Sentry.Extensions.Logging.Tests; |
| 4 | + |
| 5 | +public class SentryHttpMessageHandlerBuilderFilterTests |
| 6 | +{ |
| 7 | + [SkippableFact] |
| 8 | + public void Configure_HandlerEnabled_ShouldAddSentryHttpMessageHandler() |
| 9 | + { |
| 10 | +#if __ANDROID__ |
| 11 | + Skip.If(true, "Can't create proxies for classes without parameterless constructors on Android"); |
| 12 | +#endif |
| 13 | + |
| 14 | + // Arrange |
| 15 | + var hub = Substitute.For<IHub>(); |
| 16 | + SentryClientExtensions.SentryOptionsForTestingOnly = new SentryOptions { DisableSentryHttpMessageHandler = false }; |
| 17 | + |
| 18 | + var filter = new SentryHttpMessageHandlerBuilderFilter(() => hub); |
| 19 | + var handlerBuilder = Substitute.For<HttpMessageHandlerBuilder>(); |
| 20 | + handlerBuilder.AdditionalHandlers.Returns(new List<DelegatingHandler>()); |
| 21 | + Action<HttpMessageHandlerBuilder> next = _ => { }; |
| 22 | + |
| 23 | + // Act |
| 24 | + var configure = filter.Configure(next); |
| 25 | + configure(handlerBuilder); |
| 26 | + |
| 27 | + // Assert |
| 28 | + handlerBuilder.AdditionalHandlers.Should().ContainSingle(h => h is SentryHttpMessageHandler); |
| 29 | + } |
| 30 | + |
| 31 | + [SkippableFact] |
| 32 | + public void Configure_HandlerDisabled_ShouldNotAddSentryHttpMessageHandler() |
| 33 | + { |
| 34 | +#if __ANDROID__ |
| 35 | + Skip.If(true, "Can't create proxies for classes without parameterless constructors on Android"); |
| 36 | +#endif |
| 37 | + |
| 38 | + // Arrange |
| 39 | + var hub = Substitute.For<IHub>(); |
| 40 | + SentryClientExtensions.SentryOptionsForTestingOnly = new SentryOptions { DisableSentryHttpMessageHandler = true }; |
| 41 | + |
| 42 | + var filter = new SentryHttpMessageHandlerBuilderFilter(() => hub); |
| 43 | + var handlerBuilder = Substitute.For<HttpMessageHandlerBuilder>(); |
| 44 | + handlerBuilder.AdditionalHandlers.Returns(new List<DelegatingHandler>()); |
| 45 | + Action<HttpMessageHandlerBuilder> next = _ => { }; |
| 46 | + |
| 47 | + // Act |
| 48 | + var configure = filter.Configure(next); |
| 49 | + configure(handlerBuilder); |
| 50 | + |
| 51 | + // Assert |
| 52 | + handlerBuilder.AdditionalHandlers.Should().NotContain(h => h is SentryHttpMessageHandler); |
| 53 | + } |
| 54 | +} |
0 commit comments