private ControllerWithContext <SplitController> CreateController() { var services = new ServiceCollection(); services .AddEntityFramework() .AddInMemoryDatabase() .AddDbContext <PayMeBackContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase()); InjectionConfig.ConfigureCustomServices(services); var serviceProvider = services.BuildServiceProvider(); var context = CreateContext(serviceProvider); services.AddTransient <IGenericRepository <Split>, GenericRepository <Split> >(provider => new GenericRepository <Split>(context)); var mapper = serviceProvider.GetService <IMapper>(); var splitService = serviceProvider.GetService <ISplitService>(); var splitController = new SplitController(mapper, splitService); var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, "1") }; var httpContext = new DefaultHttpContext(); httpContext.User = new ClaimsPrincipal(new ClaimsIdentity(claims)); splitController.ActionContext.HttpContext = httpContext; return(new ControllerWithContext <SplitController> { Controller = splitController, Context = context }); }
public SplitControllerTests() { _splitServiceMock = new Mock <ISplitService>(); var mapper = MapperConfig.CreateMapper(); _controller = new SplitController(mapper, _splitServiceMock.Object); var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, "1") }; var httpContext = new DefaultHttpContext(); httpContext.User = new ClaimsPrincipal(new ClaimsIdentity(claims)); _controller.ActionContext.HttpContext = httpContext; }
public async Task Post_ReturnsResultWithStatusCode200() { var mockSplitter = new Mock <ISplitter>(); mockSplitter.Setup(s => s.SplitAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int[]>())) .ReturnsAsync(() => new SplitResult()); var controller = new SplitController(mockSplitter.Object) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() } }; ActionResult <SplitResult> result = await controller.Post(new SplitRequest { }); Assert.AreEqual(200, controller.Response.StatusCode); Assert.IsNull(result.Value.ErrorStatus); Assert.IsNull(result.Value.StackTrace); }
public async Task Post_WithError_ReturnsResultWithStatusCode500() { var mockSplitter = new Mock <ISplitter>(); mockSplitter.Setup(s => s.SplitAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int[]>())) .ReturnsAsync(() => new SplitResult { ErrorStatus = "some error message", StackTrace = "some stack trace" }); var controller = new SplitController(mockSplitter.Object) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() } }; ActionResult <SplitResult> result = await controller.Post(new SplitRequest { InputFilePath = "some input path" }); Assert.AreEqual(500, controller.Response.StatusCode); Assert.AreEqual("some error message", result.Value.ErrorStatus); Assert.AreEqual("some stack trace", result.Value.StackTrace); }