protected internal virtual IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object state) { AddVersionHeader(httpContext); // Get the controller type string controllerName = RequestContext.RouteData.GetRequiredString("controller"); // Instantiate the controller and call Execute IControllerFactory factory = ControllerBuilder.GetControllerFactory(); IController controller = factory.CreateController(RequestContext, controllerName); if (controller == null) { throw new InvalidOperationException( String.Format( CultureInfo.CurrentUICulture, MvcResources.ControllerBuilder_FactoryReturnedNull, factory.GetType(), controllerName)); } BeginExecuteDelegate beginExecute; EndExecuteDelegate endExecute; IAsyncController asyncController = controller as IAsyncController; if (asyncController != null) { beginExecute = asyncController.BeginExecute; endExecute = asyncController.EndExecute; } else { // execute synchronous controller asynchronously ExecuteDelegate executeDelegate = rc => SynchronizationContext.Sync(() => controller.Execute(rc)); beginExecute = executeDelegate.BeginInvoke; endExecute = executeDelegate.EndInvoke; } BeginInvokeCallback beginCallback = (innerCallback, innerState) => { try { return(beginExecute(RequestContext, innerCallback, innerState)); } catch { factory.ReleaseController(controller); throw; } }; AsyncCallback endCallback = ar => { try { endExecute(ar); } finally { factory.ReleaseController(controller); } }; return(AsyncResultWrapper.Wrap(callback, state, beginCallback, endCallback, _processRequestTag)); }
public void Should_be_able_to_register_controller_factory() { var builder = new ControllerBuilder(); new RegisterControllerFactory(adapter.Object, builder).Execute(); Assert.Same(controllerFactory.Object, builder.GetControllerFactory()); }
public void ControllerBuilderReturnsDefaultControllerBuilderByDefault() { // Arrange ControllerBuilder cb = new ControllerBuilder(); // Act IControllerFactory cf = cb.GetControllerFactory(); // Assert Assert.IsType <DefaultControllerFactory>(cf); }
public void ControllerBuilderReturnsDefaultControllerBuilderByDefault() { // Arrange ControllerBuilder cb = new ControllerBuilder(); // Act IControllerFactory cf = cb.GetControllerFactory(); // Assert Assert.IsInstanceOfType(cf, typeof(DefaultControllerFactory)); }
public void DefaultControllerFactoryIsDefaultControllerFactory() { // Arrange ControllerBuilder builder = new ControllerBuilder(); // Act IControllerFactory returnedControllerFactory = builder.GetControllerFactory(); //Assert Assert.Equal(typeof(DefaultControllerFactory), returnedControllerFactory.GetType()); }
public void Should_not_register_controller_factory_when_excluded() { RegisterControllerFactory.Excluded = true; DependencyResolver.SetResolver(null); var builder = new ControllerBuilder(); new RegisterControllerFactory(adapter.Object, builder).Execute(); Assert.NotSame(controllerFactory.Object, builder.GetControllerFactory()); }
public static void RunControllerMethod(this HttpContextBase context, string controllerName, string methodName, params object[] args) { var requestContext = CreateRequestContext(context, controllerName); var cb = new ControllerBuilder(); var controller = cb.GetControllerFactory().CreateController(requestContext, controllerName); Type controllerType = controller.GetType(); controllerType.InvokeMember(methodName, BindingFlags.InvokeMethod, null, controller, args); }
public void ControllerBuilderReturnsDefaultControllerBuilderByDefault() { // Arrange ControllerBuilder cb = new ControllerBuilder(); // Act IControllerFactory cf = cb.GetControllerFactory(); // Assert Assert.IsType<DefaultControllerFactory>(cf); }
public static T RunControllerFunction <T>(this HttpContextBase context, string controllerName, string functionName, params object[] args) { var requestContext = CreateRequestContext(context, controllerName); var cb = new ControllerBuilder(); var controller = cb.GetControllerFactory().CreateController(requestContext, controllerName); Type controllerType = controller.GetType(); var ret = controllerType.InvokeMember(functionName, BindingFlags.InvokeMethod, null, controller, args); return((T)ret); }
public void SettingControllerFactoryReturnsSetFactory() { // Arrange ControllerBuilder builder = new ControllerBuilder(); Mock <IControllerFactory> setFactory = new Mock <IControllerFactory>(); // Act builder.SetControllerFactory(setFactory.Object); // Assert Assert.Same(setFactory.Object, builder.GetControllerFactory()); }
public void CreateControllerWithFactoryTypeReturnsValidType() { // Arrange ControllerBuilder cb = new ControllerBuilder(); cb.SetControllerFactory(typeof(MockControllerFactory)); // Act IControllerFactory cf = cb.GetControllerFactory(); // Assert Assert.IsType <MockControllerFactory>(cf); }
public void Should_be_able_to_register_controller_factory() { var builder = new ControllerBuilder(); var registration = new RegisterControllerFactory(builder); var serviceLocator = new Mock<FakeServiceLocator>(); var controllerFactory = new Mock<IControllerFactory>(); serviceLocator.Setup(sl => sl.GetInstance<IControllerFactory>()).Returns(controllerFactory.Object); registration.Execute(serviceLocator.Object); Assert.Same(controllerFactory.Object, builder.GetControllerFactory()); }
public void CreateControllerWithFactoryInstanceReturnsInstance() { // Arrange ControllerBuilder cb = new ControllerBuilder(); DefaultControllerFactory factory = new DefaultControllerFactory(); cb.SetControllerFactory(factory); // Act IControllerFactory cf = cb.GetControllerFactory(); // Assert Assert.Same(factory, cf); }
public static IController GetController(string controllerName, RequestContext requestContext = null) { if (requestContext == null) { var context = new HttpContextWrapper(HttpContext.Current); requestContext = context.Request.RequestContext; } var cBuilder = new ControllerBuilder(); var ret = cBuilder.GetControllerFactory().CreateController(requestContext, controllerName); return(ret); }
public void ControllerBuilderGetControllerFactoryDelegatesToResolver() { //Arrange Mock <IControllerFactory> factory = new Mock <IControllerFactory>(); Resolver <IControllerFactory> resolver = new Resolver <IControllerFactory> { Current = factory.Object }; ControllerBuilder builder = new ControllerBuilder(resolver); //Act IControllerFactory result = builder.GetControllerFactory(); //Assert Assert.AreSame(factory.Object, result); }
public IControllerFactory GetControllerFactory() { return(controllerBuilder.GetControllerFactory()); }
public void CreateControllerWithFactoryInstanceReturnsInstance() { // Arrange ControllerBuilder cb = new ControllerBuilder(); DefaultControllerFactory factory = new DefaultControllerFactory(); cb.SetControllerFactory(factory); // Act IControllerFactory cf = cb.GetControllerFactory(); // Assert Assert.Same(factory, cf); }
public void ControllerBuilderGetControllerFactoryDelegatesToResolver() { //Arrange Mock<IControllerFactory> factory = new Mock<IControllerFactory>(); Resolver<IControllerFactory> resolver = new Resolver<IControllerFactory> { Current = factory.Object }; ControllerBuilder builder = new ControllerBuilder(resolver); //Act IControllerFactory result = builder.GetControllerFactory(); //Assert Assert.Same(factory.Object, result); }
public void SettingControllerFactoryReturnsSetFactory() { // Arrange ControllerBuilder builder = new ControllerBuilder(); Mock<IControllerFactory> setFactory = new Mock<IControllerFactory>(); // Act builder.SetControllerFactory(setFactory.Object); // Assert Assert.Same(setFactory.Object, builder.GetControllerFactory()); }
public void DefaultControllerFactoryIsDefaultControllerFactory() { // Arrange ControllerBuilder builder = new ControllerBuilder(); // Act IControllerFactory returnedControllerFactory = builder.GetControllerFactory(); //Assert Assert.Equal(typeof(DefaultControllerFactory), returnedControllerFactory.GetType()); }
public void CreateControllerWithFactoryTypeReturnsValidType() { // Arrange ControllerBuilder cb = new ControllerBuilder(); cb.SetControllerFactory(typeof(MockControllerFactory)); // Act IControllerFactory cf = cb.GetControllerFactory(); // Assert Assert.IsType<MockControllerFactory>(cf); }