public void CreateConfiguration_uses_selected_provider_to_create_Event_filters([Frozen] IEnumerable <IErrorFilterProvider> errorFilterProviders, NybusHostConfigurationFactory sut) { var providers = errorFilterProviders.ToArray(); var selectedProviders = providers.Take(providers.Length - 1); var settings = new Dictionary <string, string>(); var i = 0; foreach (var provider in selectedProviders) { settings.Add($"EventErrorFilters:{i}:type", provider.ProviderName); i++; } var config = new ConfigurationBuilder().AddInMemoryCollection(settings).Build(); var options = new NybusHostOptions(); config.Bind(options); var configuration = sut.CreateConfiguration(options); Assert.True(selectedProviders.All(p => { Mock.Get(p).Verify(o => o.CreateErrorFilter(It.IsAny <IConfigurationSection>())); return(true); })); }
public static IServiceCollection AddNybus(this IServiceCollection services, Action <INybusConfigurator> configure) { var configurator = new NybusConfigurator(); configurator.RegisterErrorFilterProvider <RetryErrorFilterProvider>(); configurator.RegisterErrorFilterProvider <DiscardErrorFilterProvider>(); services.AddSingleton <DiscardErrorFilter>(); configure(configurator); services.AddSingleton(sp => { var loggerFactory = sp.GetRequiredService <ILoggerFactory>(); var builder = new NybusHostBuilder(loggerFactory); return(builder); }); services.AddSingleton <INybusHostConfigurationFactory, NybusHostConfigurationFactory>(); services.AddSingleton(sp => { var factory = sp.GetRequiredService <INybusHostConfigurationFactory>(); var options = sp.GetRequiredService <NybusHostOptions>(); var configuration = factory.CreateConfiguration(options); configurator.CustomizeConfiguration(sp, configuration); return(configuration); }); services.AddSingleton(sp => { var options = new NybusHostOptions(); configurator.Configuration?.Bind(options); return(options); }); services.AddSingleton <IMessageDescriptorStore, MessageDescriptorStore>(); configurator.ConfigureServices(services); services.AddSingleton(sp => { var engine = sp.GetRequiredService <IBusEngine>(); var builder = sp.GetRequiredService <NybusHostBuilder>(); var configuration = sp.GetRequiredService <NybusConfiguration>(); configurator.ConfigureBuilder(builder); return(builder.BuildHost(engine, sp, configuration)); }); services.AddSingleton <IBusHost>(sp => sp.GetRequiredService <NybusHost>()); services.AddSingleton <IBus>(sp => sp.GetRequiredService <NybusHost>()); return(services); }
public void CreateConfiguration_ignores_unregistered_providers_when_creating_command_filters(NybusHostConfigurationFactory sut, NybusHostOptions options) { var configuration = sut.CreateConfiguration(options); Assert.That(configuration.CommandErrorFilters, Is.Empty); }