public async Task BeforeRequestAsyncTest() { var context = new ApiActionContext { HttpApiConfig = new HttpApiConfig(), RequestMessage = new HttpApiRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri("http://www.webapi.com/") }, ApiActionDescriptor = ApiDescriptorCache.GetApiActionDescriptor(typeof(IMyApi).GetMethod("PostAsync")) }; var parameter = context.ApiActionDescriptor.Parameters[0]; parameter.Value = new { name = "老 九", birthDay = DateTime.Parse("2010-10-10") }; var attr = new FormContentAttribute(); await((IApiParameterAttribute)attr).BeforeRequestAsync(context, parameter); var body = await context.RequestMessage.Content.ReadAsStringAsync(); var time = context.HttpApiConfig.FormatOptions.CloneChange(attr.DateTimeFormat).FormatDateTime(DateTime.Parse("2010-10-10")); var target = $"name={HttpUtility.UrlEncode("老 九",Encoding.UTF8 )}&birthDay={HttpUtility.UrlEncode(time, Encoding.UTF8)}"; Assert.True(body.ToUpper() == target.ToUpper()); }
public async Task OnRequestAsyncTest() { var apiAction = new DefaultApiActionDescriptor(typeof(IMyApi).GetMethod("PostAsync")); var context = new TestRequestContext(apiAction, new { name = "老 九", birthDay = DateTime.Parse("2010-10-10") }); context.HttpContext.RequestMessage.RequestUri = new Uri("http://www.mywebapi.com"); context.HttpContext.RequestMessage.Method = HttpMethod.Post; var attr = new FormContentAttribute(); await attr.OnRequestAsync(new ApiParameterContext(context, 0)); var body = await context.HttpContext.RequestMessage.Content.ReadAsStringAsync(); var time = KeyValueSerializer.Serialize("time", DateTime.Parse("2010-10-10"), null); var target = $"name={HttpUtility.UrlEncode("老 九", Encoding.UTF8)}&birthDay={HttpUtility.UrlEncode(time[0].Value, Encoding.UTF8)}"; Assert.True(body.ToUpper() == target.ToUpper()); }
public AttrElementTuple(FormContentAttribute attr, FormElement element) { Attr = attr; Element = element; }