/// <summary> /// Mimick DI in a similar fashion to MVC and obtain a controller instance /// </summary> private DefaultApiController InitController(string method = "GET") { IShippingRepository repo = _provider.GetRequiredService <IShippingRepository>(); var controller = new DefaultApiController(repo); controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); controller.HttpContext.Request.Method = method; return(controller); }
/// <summary> /// Helper that creates and validates a trip (returning its ID) /// </summary> private int CreateTrip(DefaultApiController controller, ViewModels.TripCreationDetails details) { // Test the result var result = controller.CreateTrip(details) as StatusCodeResult; Assert.Equal((int)HttpStatusCode.Created, result.StatusCode); // Check response headers Assert.True(controller.ControllerContext.HttpContext.Response.Headers.ContainsKey("location")); var location = controller.ControllerContext.HttpContext.Response.Headers["location"].ToString(); var format = location.StartsWith("/trips/"); var tripId = 0; Assert.True(format); Assert.True(int.TryParse(location.Replace("/trips/", ""), out tripId)); Assert.True(tripId > 0); return(tripId); }