public void Should_throw_an_ArgumentNullException_when_pid_plugin_settings_is_null() { // arrange PidPluginSettings pidPluginSettings = null; // act & assert Assert.Throws <ArgumentNullException>(nameof(pidPluginSettings), () => this.Sut.AddPidPlugin(pidPluginSettings)); }
static void AddPidPlugin(IServiceCollection services, IConfiguration configuration) { PidPluginSettings pidConnectorSettings = new PidPluginSettings(); configuration.GetSection("PidPluginSettings") .Bind(pidConnectorSettings); services.AddPidPlugin(pidConnectorSettings); }
public TheMethod_AddPidPlugin() { this.Settings = new PidPluginSettings() { BaseUrl = "https://fake-url.com/api/", RetryAttempts = 3, SubscriptionKey = "", TimeoutInMinutes = 2, CacheSettings = new CacheSettings() { BankAccountDetailInMinutes = 1, SpecialRecordsInMinutes = 2, EntityDataBasicInMinutes = 3, BankAccountOwnershipInMinutes = 4, EntityDataFullInMinutes = 5 } }; }
public static IServiceCollection AddPidPlugin(this IServiceCollection services, PidPluginSettings pidPluginSettings) { if (pidPluginSettings == null) { throw new ArgumentNullException(nameof(pidPluginSettings)); } services.Configure <CacheOptions>(options => { options.BankAccountDetailExpiration = TimeSpan.FromMinutes( pidPluginSettings.CacheSettings.BankAccountDetailInMinutes); options.BankAccountOwnershipExpiration = TimeSpan.FromMinutes( pidPluginSettings.CacheSettings.BankAccountOwnershipInMinutes); options.EntityDataBasicExpiration = TimeSpan.FromMinutes( pidPluginSettings.CacheSettings.EntityDataBasicInMinutes); options.EntityDataFullExpiration = TimeSpan.FromMinutes( pidPluginSettings.CacheSettings.EntityDataFullInMinutes); options.SpecialRecordsExpiration = TimeSpan.FromMinutes( pidPluginSettings.CacheSettings.SpecialRecordsInMinutes); }); services.AddMemoryCache(); services.AddTransient <ICacheAccessor, MemoryCacheAccessor>(); services.AddTransient <HttpClientErrorHandler>(); services.AddHttpClient <IPidPluginClient, PidPluginClient>() .ConfigureHttpClient(builder => { builder.BaseAddress = new Uri(pidPluginSettings.BaseUrl); builder.Timeout = TimeSpan.FromMinutes(pidPluginSettings.TimeoutInMinutes); builder.DefaultRequestHeaders.Add( SubscriptionKeyHeader, pidPluginSettings.SubscriptionKey ); }) .AddHttpMessageHandler <HttpClientErrorHandler>() .AddTransientHttpErrorPolicy(policy => { return(policy.WaitAndRetryAsync( pidPluginSettings.RetryAttempts, _ => TimeSpan.FromMilliseconds(200) )); }); return(services); }