/// <summary> /// Creates the HTTP request message from a lambda expression /// </summary> /// <typeparam name="TController">The type of the controller.</typeparam> /// <typeparam name="TResponse">The type of the response.</typeparam> /// <param name="expression">The expression.</param> /// <param name="headerBuilder">The header builder.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">expression</exception> public HttpRequestMessage CreateHttpRequestMessage <TController, TResponse>( Expression <Func <TController, TResponse> > expression, Action <HttpRequestHeaders> headerBuilder = null) where TController : ControllerBase { var message = RouteHelper.BuildRequestMessage(expression); headerBuilder?.Invoke(message.Headers); Debug(expression, headerBuilder, message); return(message); }
public async Task PostComplexModel(ComplexModel complexModel) { var message = RouteHelper.BuildRequestMessage <UnitTestController, Task <string> >(controller => controller.PostComplexModel(complexModel)); message.Should().NotBeNull(); message.Method.Should().Be(System.Net.Http.HttpMethod.Post); message.Content.Should().BeOfType <StringContent>(); var content = await message.Content.ReadAsStringAsync(); var ogContent = JsonConvert.SerializeObject(complexModel); content.Should().Be(ogContent); }
public async Task PostComplexModelWithRouteParameter(ComplexModel complexModel) { //this is how we add custom controller action parameter decomposers ControllerActionParameterBinders.AddBinders(new IdModelProvider()); var message = RouteHelper.BuildRequestMessage <UnitTestController, Task <string> >(controller => controller.PostComplexModelWithId(complexModel)); message.Should().NotBeNull(); message.Method.Should().Be(System.Net.Http.HttpMethod.Post); message.Content.Should().BeOfType <StringContent>(); message.RequestUri.ToString().Should().Be($"/api/v1/UnitTest/{complexModel.Id}"); var content = await message.Content.ReadAsStringAsync(); var ogContent = JsonConvert.SerializeObject(complexModel); content.Should().Be(ogContent); }