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());
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
 public AttrElementTuple(FormContentAttribute attr, FormElement element)
 {
     Attr    = attr;
     Element = element;
 }