public void GetById() { // Arrange var httpConfiguration = new HttpConfiguration(); WebApiConfig.Register(httpConfiguration); var httpRouteData = new System.Web.Http.Routing.HttpRouteData(httpConfiguration.Routes["DefaultApi"], new System.Web.Http.Routing.HttpRouteValueDictionary { { "controller", "Expense" } }); ExpenseController controller = new ExpenseController() { Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:53852/api/Expense/") { Properties = { { System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, httpConfiguration }, { System.Web.Http.Hosting.HttpPropertyKeys.HttpRouteDataKey, httpRouteData } } } }; LoadTestData(controller); // Act var result = controller.Get(0); // Assert Assert.AreEqual(System.Net.HttpStatusCode.OK, result.StatusCode); }
public void Post() { // Arrange var httpConfiguration = new HttpConfiguration(); WebApiConfig.Register(httpConfiguration); var httpRouteData = new System.Web.Http.Routing.HttpRouteData(httpConfiguration.Routes["DefaultApi"], new System.Web.Http.Routing.HttpRouteValueDictionary { { "controller", "Expense" } }); ExpenseController controller = new ExpenseController() { Request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:53852/api/Expense/") { Properties = { { System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, httpConfiguration }, { System.Web.Http.Hosting.HttpPropertyKeys.HttpRouteDataKey, httpRouteData } } } }; // Act var response = controller.Post("<expense><cost_centre>DEV002</cost_centre><total>890.55</total><payment_method>personalcard</payment_method><date>23/07/2018</date><description>test expense record</description></expense>"); // Assert Assert.AreEqual(System.Net.HttpStatusCode.Created, response.StatusCode); }
// //You can use the following additional attributes as you write your tests: // //Use ClassInitialize to run code before running the first test in the class //[ClassInitialize()] //public static void MyClassInitialize(TestContext testContext) //{ //} // //Use ClassCleanup to run code after all tests in a class have run //[ClassCleanup()] //public static void MyClassCleanup() //{ //} // //Use TestInitialize to run code before running each test //[TestInitialize()] //public void MyTestInitialize() //{ //} // //Use TestCleanup to run code after each test has run //[TestCleanup()] //public void MyTestCleanup() //{ //} // #endregion private static void SetupControllerForTests(ApiController controller, string requestUri, string routeName, string routeTemplate) { var config = new HttpConfiguration(); var request = new HttpRequestMessage(HttpMethod.Get, requestUri); var route = config.Routes.MapHttpRoute(routeName, routeTemplate); var routeData = new System.Web.Http.Routing.HttpRouteData(route, new System.Web.Http.Routing.HttpRouteValueDictionary { { "controller", "resolve" } }); request.Properties[System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey] = config; controller.ControllerContext = new System.Web.Http.Controllers.HttpControllerContext(config, routeData, request); }
private System.Web.Http.Controllers.HttpControllerContext CreateControllerContext() { System.Web.Http.HttpConfiguration config = new System.Web.Http.HttpConfiguration(); System.Web.Http.Routing.IHttpRouteData route = new System.Web.Http.Routing.HttpRouteData(new System.Web.Http.Routing.HttpRoute()); System.Net.Http.HttpRequestMessage req = new System.Net.Http.HttpRequestMessage(); req.Properties[System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey] = config; req.Properties[System.Web.Http.Hosting.HttpPropertyKeys.HttpRouteDataKey] = route; System.Web.Http.Controllers.HttpControllerContext context = new System.Web.Http.Controllers.HttpControllerContext(config, route, req); context.ControllerDescriptor = new System.Web.Http.Controllers.HttpControllerDescriptor(config, "MockController", typeof(System.Web.Http.ApiController)); return(context); }