/// <summary> /// Extensão que configura o Handler para tratamento de erros /// </summary> /// <param name="app">Applicação</param> public static IApplicationBuilder ConfigureDefaultExceptionHandler( this IApplicationBuilder app) { IParserHelper parserHelper = app.ApplicationServices.GetRequiredService <IParserHelper>(); app .UseMiddleware <Middleware.UnhandledExceptionMiddleware>() .UseExceptionHandler(config => { config.Run(async context => { IExceptionHandlerFeature error = context.Features.Get <IExceptionHandlerFeature>(); if (error != null) { context.Response.StatusCode = error.Error switch { UnauthorizedAccessException unauthorizedAccessException => StatusCodes.Status401Unauthorized, _ => StatusCodes.Status400BadRequest, }; if (context.Response.StatusCode != StatusCodes.Status401Unauthorized) { context.Response.ContentType = "application/json"; ViewModel.ApiErrorResponse apiError = new ViewModel.ApiErrorResponse(); apiError.Errors.Add(new ViewModel.ApiErrorDetailResponse()); await context.Response.WriteAsync(parserHelper.ToJson(apiError)).ConfigureAwait(false); } } }); }) .UseHsts(); return(app); }
public void execution_must_be_fast() { //warm up _parserHelper .ToJson(new { Id = 1, Name = "Abc" }); _parserHelper .ExecutionTimeOf(s => s.ToJson(new { Id = 1, Name = "Abc" })) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.ToJson(new { Id = 1, Name = "Abc", List = new[] { new { Id = 2, Name = "" }, new { Id = 3, Name = "XYZ" } }, Other = new { OtherId = 4333, OtherName = "Test" } })) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.ToJson(new Mocks.SimpleModel() { Code = 123456789012345678, Id = 123, Name = nameof(Mocks.SimpleModel) })) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.ToJson(new Mocks.ComplexModel() { Code = 987642341212114498, Id = 67890, Name = nameof(Mocks.ComplexModel), SimpleModels = new Mocks.SimpleModel[] { new Mocks.SimpleModel() { Id = 1, Name = nameof(Mocks.SimpleModel), Code = 987654347865 }, new Mocks.SimpleModel() { Id = 2, Name = nameof(Mocks.SimpleModel), Code = 0475039592398 } } })) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.FromJson <dynamic>("{\"id\":123,\"name\":\"SimpleModel\",\"code\":123456789012345678}")) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.FromJson <dynamic>("{\"id\":67890,\"name\":\"ComplexModel\",\"code\":987642341212114498,\"simpleModels\":[{\"id\":1,\"name\":\"SimpleModel\",\"code\":987654347865},{\"id\":2,\"name\":\"SimpleModel\",\"code\":475039592398}]}")) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.FromJson <Mocks.SimpleModel>("{\"id\":123,\"name\":\"SimpleModel\",\"code\":123456789012345678}")) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.FromJson <Mocks.ComplexModel>("{\"id\":67890,\"name\":\"ComplexModel\",\"code\":987642341212114498,\"simpleModels\":[{\"id\":1,\"name\":\"SimpleModel\",\"code\":987654347865},{\"id\":2,\"name\":\"SimpleModel\",\"code\":475039592398}]}")) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.To <Mocks.SimpleModel, dynamic>(new { Id = 123, Code = 56789, Name = nameof(Mocks.SimpleModel) })) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.To <dynamic, Mocks.SimpleModel>(new Mocks.SimpleModel() { Id = 123, Code = 56789, Name = nameof(Mocks.SimpleModel) })) .Should() .BeLessOrEqualTo(MaxExecutionTime); _parserHelper .ExecutionTimeOf(s => s.To <Mocks.ComplexModel, Mocks.SimpleModel>(new Mocks.SimpleModel() { Id = 123, Code = 56789, Name = nameof(Mocks.SimpleModel) })) .Should() .BeLessOrEqualTo(MaxExecutionTime); }