Browse Source

fix(wrapper): fixed invalid wrapper IsEnabled option

pull/443/head
cKey 4 years ago
parent
commit
531e281349
  1. 3
      aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Filters/AbpWrapResultFilter.cs
  2. 6
      aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/WrapResultChecker.cs
  3. 20
      aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Wraping/EmptyActionResultWrapper.cs
  4. 7
      aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController.cs
  5. 10
      aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController_Tests.cs
  6. 12
      aspnet-core/tests/LINGYUN.Abp.AspNetCore.Tests/LINGYUN/Abp/AspNetCore/AbpAspNetCoreTestBase.cs

3
aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Filters/AbpWrapResultFilter.cs

@ -1,6 +1,7 @@
using LINGYUN.Abp.AspNetCore.Mvc.Wrapper.Wraping;
using LINGYUN.Abp.Wrapper;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.Options;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.DependencyInjection;
@ -28,9 +29,11 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Wrapper.Filters
protected virtual Task HandleAndWrapResult(ResultExecutingContext context)
{
var options = context.GetRequiredService<IOptions<AbpWrapperOptions>>().Value;
var actionResultWrapperFactory = context.GetRequiredService<IActionResultWrapperFactory>();
actionResultWrapperFactory.CreateFor(context).Wrap(context);
context.HttpContext.Response.Headers.Add(AbpHttpWrapConsts.AbpWrapResult, "true");
context.HttpContext.Response.StatusCode = (int)options.HttpStatusCode;
return Task.CompletedTask;
}

6
aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/WrapResultChecker.cs

@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.Options;
using System;
using System.Linq;
using System.Reflection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Threading;
@ -44,6 +43,11 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Wrapper
protected virtual bool CheckForBase(FilterContext context)
{
if (!Options.IsEnabled)
{
return false;
}
if (context.HttpContext.Request.Headers.ContainsKey(AbpHttpWrapConsts.AbpDontWrapResult))
{
return false;

20
aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Wraping/EmptyActionResultWrapper.cs

@ -11,16 +11,28 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Wrapper.Wraping
public void Wrap(FilterContext context)
{
var options = context.GetRequiredService<IOptions<AbpWrapperOptions>>().Value;
var code = options.CodeWithEmptyResult(context.HttpContext.RequestServices);
var message = options.MessageWithEmptyResult(context.HttpContext.RequestServices);
switch (context)
{
case ResultExecutingContext resultExecutingContext:
resultExecutingContext.Result = new ObjectResult(new WrapResult(code, message));
if (options.ErrorWithEmptyResult)
{
var code = options.CodeWithEmptyResult(context.HttpContext.RequestServices);
var message = options.MessageWithEmptyResult(context.HttpContext.RequestServices);
resultExecutingContext.Result = new ObjectResult(new WrapResult(code, message));
return;
}
resultExecutingContext.Result = new ObjectResult(new WrapResult(options.CodeWithSuccess, result: null));
return;
case PageHandlerExecutedContext pageHandlerExecutedContext:
pageHandlerExecutedContext.Result = new ObjectResult(new WrapResult(code, message));
if (options.ErrorWithEmptyResult)
{
var code = options.CodeWithEmptyResult(context.HttpContext.RequestServices);
var message = options.MessageWithEmptyResult(context.HttpContext.RequestServices);
pageHandlerExecutedContext.Result = new ObjectResult(new WrapResult(code, message));
return;
}
pageHandlerExecutedContext.Result = new ObjectResult(new WrapResult(options.CodeWithSuccess, result: null));
return;
}
}

7
aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController.cs

@ -90,5 +90,12 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Results
{
throw new HasDbException();
}
[HttpPut]
[Route("not-wrap-204")]
public Task NotWrapWith204()
{
return Task.CompletedTask;
}
}
}

10
aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController_Tests.cs

@ -1,5 +1,6 @@
using LINGYUN.Abp.Wrapper;
using Shouldly;
using System.Net.Http;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
using Volo.Abp.Http;
@ -115,5 +116,14 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Results
result.ShouldNotBeNull();
result.Name.ShouldBe("Not Wrap");
}
[Fact]
public async Task Should_Return_Not_Wrap_Result_For_Response_204()
{
var result = await GetResponseAsObjectAsync<WrapResult>("/api/wrap-result-test/not-wrap-204", System.Net.HttpStatusCode.OK, method: HttpMethod.Put);
result.ShouldNotBeNull();
result.Code.ShouldBe("0");
result.Result.ShouldBeNull();
}
}
}

12
aspnet-core/tests/LINGYUN.Abp.AspNetCore.Tests/LINGYUN/Abp/AspNetCore/AbpAspNetCoreTestBase.cs

@ -26,23 +26,23 @@ namespace LINGYUN.Abp.AspNetCore
RequestHeaders = new Dictionary<string, string>();
}
protected virtual async Task<T> GetResponseAsObjectAsync<T>(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false)
protected virtual async Task<T> GetResponseAsObjectAsync<T>(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false, HttpMethod method = null)
{
var strResponse = await GetResponseAsStringAsync(url, expectedStatusCode, xmlHttpRequest);
var strResponse = await GetResponseAsStringAsync(url, expectedStatusCode, xmlHttpRequest, method);
return JsonSerializer.Deserialize<T>(strResponse, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
}
protected virtual async Task<string> GetResponseAsStringAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false)
protected virtual async Task<string> GetResponseAsStringAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false, HttpMethod method = null)
{
using (var response = await GetResponseAsync(url, expectedStatusCode, xmlHttpRequest))
using (var response = await GetResponseAsync(url, expectedStatusCode, xmlHttpRequest, method))
{
return await response.Content.ReadAsStringAsync();
}
}
protected virtual async Task<HttpResponseMessage> GetResponseAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false)
protected virtual async Task<HttpResponseMessage> GetResponseAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false, HttpMethod method = null)
{
using (var requestMessage = new HttpRequestMessage(HttpMethod.Get, url))
using (var requestMessage = new HttpRequestMessage(method ?? HttpMethod.Get, url))
{
requestMessage.Headers.Add("Accept-Language", CultureInfo.CurrentUICulture.Name);
if (xmlHttpRequest)

Loading…
Cancel
Save