private static ExceptionManager Build() { return(ExceptionManagerBuilder .Configure() .WithExceptionPolicyDefinition(GetDefinition()) .Build()); }
public void Configure_Creates_A_New_Instance_Of_ExceptionManagerBuilder() { var result = ExceptionManagerBuilder.Configure(); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(ExceptionManagerBuilder)); }
public void WithExceptionHandler_Returns_Same_ExceptionManagerBuilder() { var exceptionManagerBuilder = ExceptionManagerBuilder.Configure(); Assert.AreSame( exceptionManagerBuilder, exceptionManagerBuilder.WithExceptionPolicyDefinition(GetDefinition())); }
public void WithExceptionPolicyDefinition_Returns_An_Instance_Of_ExceptionManagerBuilder() { var result = ExceptionManagerBuilder. Configure() .WithExceptionPolicyDefinition(GetDefinition()); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(ExceptionManagerBuilder)); }
public void Use_And_Get_Filter() { var builder = new ExceptionManagerBuilder(new ServiceCollection().AddScoped <IFoo, Foo>().BuildServiceProvider()); builder.UseFilter("foobar", typeof(FoobarFiler), new Bar()); FoobarFiler fitler = (FoobarFiler)builder.GetFilters()["foobar"]; Assert.NotNull(fitler.Foo); Assert.NotNull(fitler.Bar); }
/// <summary> /// Register the <see cref="ExceptionManager"/> based service with exception policies. /// </summary> /// <param name="services">The <see cref="IServiceCollection"/> to which the service is registered.</param> /// <param name="configure">A <see cref="Action{IExceptionManagerBuilder}"/> to set exception policy.</param> /// <returns>The current <see cref="IServiceCollection"/> with the <see cref="ExceptionManager"/> based service.</returns> /// <exception cref="ArgumentNullException">The <paramref name="services"/> is null.</exception> /// <exception cref="ArgumentNullException">The <paramref name="configure"/> is null.</exception> public static IServiceCollection AddExceptionHandling(this IServiceCollection services, Action <IExceptionManagerBuilder> configure) { Guard.ArgumentNotNull(services, nameof(services)); Guard.ArgumentNotNull(configure, nameof(configure)); return(services.AddSingleton <ExceptionManager>(serviceProvider => { ExceptionManagerBuilder builder = new ExceptionManagerBuilder(serviceProvider); configure(builder); return builder.Build(); })); }
public async void InvokeAsync() { var manager = new ExceptionManagerBuilder(new ServiceCollection().BuildServiceProvider()) .AddPolicy("policy1", policies => policies.Configure(handlers => handlers.Use(_ => Task.Run(() => _flag = "policy1")))) .AddPolicy("policy2", policies => policies.Configure(handlers => handlers.Use(_ => Task.Run(() => _flag = "policy2")))) .SetDefaultPolicy("policy1") .Build(); var interceptor = new ExceptionHandlingInterceptor(_ => Task.Run(() => throw new InvalidOperationException()), manager, "policy2"); _flag = null; await Assert.ThrowsAsync <InvalidOperationException>(() => interceptor.InvokeAsync(new FakeInvocationContext())); Assert.Equal("policy2", _flag); interceptor = new ExceptionHandlingInterceptor(_ => Task.Run(() => throw new InvalidOperationException()), manager); _flag = null; await Assert.ThrowsAsync <InvalidOperationException>(() => interceptor.InvokeAsync(new FakeInvocationContext())); Assert.Equal("policy1", _flag); }