public void HandlesMissingHttpConfiguration() { var attribute = new AutofacControllerConfigurationAttribute(); var settings = new HttpControllerSettings(new HttpConfiguration()); var descriptor = new HttpControllerDescriptor(); Assert.DoesNotThrow(() => attribute.Initialize(settings, descriptor)); }
public void ExceptionThrownWhenAutofacDependencyResolverMissing() { var attribute = new AutofacControllerConfigurationAttribute(); var configuration = new HttpConfiguration(); var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); Assert.Throws <InvalidOperationException>(() => attribute.Initialize(settings, descriptor)); }
public void UsesDefaultServiceWhenNoKeyedServiceRegistered() { var builder = new ContainerBuilder(); var container = builder.Build(); var configuration = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container) }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); Assert.IsType <ApiControllerActionSelector>(settings.Services.GetActionSelector()); }
public void UsesRootServiceWhenNoKeyedServiceRegistered() { var builder = new ContainerBuilder(); var service = new Mock <IHttpActionSelector>().Object; builder.RegisterInstance(service); var container = builder.Build(); var configuration = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container) }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); Assert.Equal(service, settings.Services.GetActionSelector()); }
private static void AssertControllerServiceReplaced <TLimit>(Func <ServicesContainer, TLimit> serviceLocator) where TLimit : class { var builder = new ContainerBuilder(); var service = new Mock <TLimit>().Object; builder.RegisterInstance(service).As <TLimit>().InstancePerApiControllerType(typeof(TestController)); var container = builder.Build(); var configuration = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container) }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); Assert.Same(service, serviceLocator(settings.Services)); Assert.NotSame(service, serviceLocator(configuration.Services)); }
public void PerControllerServiceDoesNotOverrideDefault() { var builder = new ContainerBuilder(); var service = new Mock <IHttpActionSelector>().Object; builder.Register(c => service) .As <IHttpActionSelector>() .InstancePerApiControllerType(typeof(TestController)); var container = builder.Build(); var resolver = new AutofacWebApiDependencyResolver(container); var configuration = new HttpConfiguration { DependencyResolver = resolver }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); Assert.NotSame(service, configuration.Services.GetActionSelector()); }
public void RegistrationForBaseControllerAppliesForDerived() { var builder = new ContainerBuilder(); var service = new Mock <IHttpActionSelector>().Object; builder.Register(c => service) .As <IHttpActionSelector>() .InstancePerApiControllerType(typeof(TestController)); var container = builder.Build(); var resolver = new AutofacWebApiDependencyResolver(container); var configuration = new HttpConfiguration { DependencyResolver = resolver }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestControllerA", typeof(TestControllerA)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); Assert.Equal(service, settings.Services.GetActionSelector()); }
public void ExistingFormattersCanBeCleared() { var builder = new ContainerBuilder(); var formatter1 = new Mock <MediaTypeFormatter>().Object; var formatter2 = new Mock <MediaTypeFormatter>().Object; builder.RegisterInstance(formatter1).InstancePerApiControllerType(typeof(TestController), true); builder.RegisterInstance(formatter2).InstancePerApiControllerType(typeof(TestController), true); var container = builder.Build(); var configuration = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container) }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); Assert.Equal(2, settings.Formatters.Count); Assert.Contains(formatter1, settings.Formatters); Assert.Contains(formatter2, settings.Formatters); }
public void IntializationRunOncePerControllerType() { var builder = new ContainerBuilder(); var service = new Mock <IHttpActionSelector>().Object; int callCount = 0; builder.Register(c => service) .As <IHttpActionSelector>() .InstancePerApiControllerType(typeof(TestController)) .OnActivated(e => callCount++); var container = builder.Build(); var configuration = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container) }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); attribute.Initialize(settings, descriptor); Assert.Equal(1, callCount); }
public void ExistingListServicesCanBeCleared() { var builder = new ContainerBuilder(); var provider1 = new Mock <ModelBinderProvider>().Object; var provider2 = new Mock <ModelBinderProvider>().Object; builder.RegisterInstance(provider1).InstancePerApiControllerType(typeof(TestController), true); builder.RegisterInstance(provider2).InstancePerApiControllerType(typeof(TestController), true); var container = builder.Build(); var configuration = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container) }; var settings = new HttpControllerSettings(configuration); var descriptor = new HttpControllerDescriptor(configuration, "TestController", typeof(TestController)); var attribute = new AutofacControllerConfigurationAttribute(); attribute.Initialize(settings, descriptor); var services = settings.Services.GetServices(typeof(ModelBinderProvider)).ToArray(); Assert.Equal(2, services.Count()); Assert.Contains(provider1, services); Assert.Contains(provider2, services); }