Given_CorrelationId_NotPresent_WhenOptionsAllowBypassingUrl_IfUrlStartsAsSpecified_ThenResponseShouldReturn_200OK() { // Arrange var optionsBuilder = new CorrelationOptionsBuilder(); var options = optionsBuilder.ExcludeUrl(f => f.WhenStartsWith("/diagnostics/")).EnforceCorrelation() .Build(); var builder = new WebHostBuilder(); builder.UseStartup <CorrelatedRequestsStartup>(); builder.ConfigureServices(services => { services.Replace(ServiceDescriptor.Singleton(c => options)); }); // Act HttpResponseMessage response; using (var server = new TestServer(builder)) { using (var client = server.CreateClient()) { response = await client.GetAsync("/diagnostics/logs"); } } // Assert response.EnsureSuccessStatusCode(); }
public static IServiceCollection AddRequestCorrelation(this IServiceCollection services) { var builder = new CorrelationOptionsBuilder().EnforceCorrelation(); var options = builder.Build(); services.TryAddSingleton(options); services.TryAddSingleton <ICorrelationIdProvider, GuidBasedCorrelationIdProvider>(); return(services); }
public static IServiceCollection AddRequestCorrelation(this IServiceCollection services, Func <IExcludeRequests, IBuildOptions> optionsProvider) { if (optionsProvider == null) { throw new ArgumentNullException(nameof(optionsProvider)); } var builder = new CorrelationOptionsBuilder(); var options = optionsProvider(builder).Build(); services.TryAddSingleton(options); services.TryAddSingleton <ICorrelationIdProvider, GuidBasedCorrelationIdProvider>(); return(services); }