From 294807481dd42dc3c660e29630b36462e7bcfaaf Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Sun, 27 Oct 2019 22:52:21 +0800 Subject: Add error code tests. --- Timeline/Filters/ContentHeaderAttributes.cs | 52 --------------- Timeline/Filters/Header.cs | 99 +++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 52 deletions(-) delete mode 100644 Timeline/Filters/ContentHeaderAttributes.cs create mode 100644 Timeline/Filters/Header.cs (limited to 'Timeline/Filters') diff --git a/Timeline/Filters/ContentHeaderAttributes.cs b/Timeline/Filters/ContentHeaderAttributes.cs deleted file mode 100644 index 99bd1540..00000000 --- a/Timeline/Filters/ContentHeaderAttributes.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Filters; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Localization; -using Timeline.Models.Http; - -namespace Timeline.Filters -{ - public class RequireContentTypeAttribute : ActionFilterAttribute - { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")] - public override void OnActionExecuting(ActionExecutingContext context) - { - if (context.HttpContext.Request.ContentType == null) - { - context.Result = new BadRequestObjectResult(HeaderErrorResponse.MissingContentType()); - } - } - } - - public class RequireContentLengthAttribute : ActionFilterAttribute - { - public RequireContentLengthAttribute() - : this(true) - { - - } - - public RequireContentLengthAttribute(bool requireNonZero) - { - RequireNonZero = requireNonZero; - } - - public bool RequireNonZero { get; set; } - - [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")] - public override void OnActionExecuting(ActionExecutingContext context) - { - if (context.HttpContext.Request.ContentLength == null) - { - context.Result = new BadRequestObjectResult(HeaderErrorResponse.MissingContentLength()); - return; - } - - if (RequireNonZero && context.HttpContext.Request.ContentLength.Value == 0) - { - context.Result = new BadRequestObjectResult(HeaderErrorResponse.ZeroContentLength()); - return; - } - } - } -} diff --git a/Timeline/Filters/Header.cs b/Timeline/Filters/Header.cs new file mode 100644 index 00000000..f5fb16aa --- /dev/null +++ b/Timeline/Filters/Header.cs @@ -0,0 +1,99 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using Timeline.Models.Http; +using static Timeline.Resources.Filters; + +namespace Timeline +{ + public static partial class ErrorCodes + { + public static partial class Http + { + public static partial class Filter // bxx = 1xx + { + public static partial class Header // bbb = 100 + { + public static class ContentType // cc = 01 + { + public const int Missing = 11000101; // dd = 01 + } + + public static class ContentLength // cc = 02 + { + public const int Missing = 11000201; // dd = 01 + public const int Zero = 11000202; // dd = 02 + } + } + } + + } + } +} + +namespace Timeline.Filters +{ + public class RequireContentTypeAttribute : ActionFilterAttribute + { + internal static CommonResponse CreateResponse() + { + return new CommonResponse( + ErrorCodes.Http.Filter.Header.ContentType.Missing, + MessageHeaderContentTypeMissing); + } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")] + public override void OnActionExecuting(ActionExecutingContext context) + { + if (context.HttpContext.Request.ContentType == null) + { + context.Result = new BadRequestObjectResult(CreateResponse()); + } + } + } + + public class RequireContentLengthAttribute : ActionFilterAttribute + { + internal static CommonResponse CreateMissingResponse() + { + return new CommonResponse( + ErrorCodes.Http.Filter.Header.ContentLength.Missing, + MessageHeaderContentLengthMissing); + } + + internal static CommonResponse CreateZeroResponse() + { + return new CommonResponse( + ErrorCodes.Http.Filter.Header.ContentLength.Zero, + MessageHeaderContentLengthZero); + } + + public RequireContentLengthAttribute() + : this(true) + { + + } + + public RequireContentLengthAttribute(bool requireNonZero) + { + RequireNonZero = requireNonZero; + } + + public bool RequireNonZero { get; set; } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")] + public override void OnActionExecuting(ActionExecutingContext context) + { + if (context.HttpContext.Request.ContentLength == null) + { + context.Result = new BadRequestObjectResult(CreateMissingResponse()); + return; + } + + if (RequireNonZero && context.HttpContext.Request.ContentLength.Value == 0) + { + context.Result = new BadRequestObjectResult(CreateZeroResponse()); + return; + } + } + } +} -- cgit v1.2.3