public static void Main(string[] args) { /* * This is tightly coupled, we can do better * var provider = new FruitRandomizerService(); * var prompter = new FruitPrompterService(); * var picker = new FitnessPickerService(); * var resultWriter = new OutputService(); * * var mixer = new FruitMixer(provider, prompter, picker, resultWriter); * * mixer.Run(); * */ var containerSetup = new ContainerSetup(); var container = containerSetup.BuildContainer(); container.Resolve <FruitMixer>().Run(); var updater = new ContainerBuilder(); updater.RegisterType <ExactPickerService>().As <IFruitPicker>(); updater.Update(container); container.Resolve <FruitMixer>().Run(); Console.ReadLine(); }
public IServiceProvider ConfigureServices(IServiceCollection services) { services.Configure <CookiePolicyOptions>(options => { options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddCors(options => { options.AddPolicy("AfaqPolicy", builder => { builder.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod(); }); }); services.AddMvc(); services.AddDbContext(); services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Afaq API", Version = "v1" }); }); return(ContainerSetup.InitializeWeb(Assembly.GetExecutingAssembly(), services)); }
public void CanReadSpecificSettingValue_FromConfiguration() { ContainerSetup .Arrange((TestTypeResolver config) => { config.DefaultSettingsConfig(); config.AddPlugin <MockCorePlugin>().AddPluginType <MockSetttings>(); }) .Test(c => { c.WithConfig <EnvironmentConfig>(settings => { AddInMemorySettings(settings); }); c.Build(); }, (IAppContainer c) => { var configuration = c.Services.Resolve <IConfiguration>(); int width = configuration.GetValue <int>("App:MainWindow:Width"); width.Should().Be(50); }); }
public static void Main(string[] args) { ContainerSetup containerSetup = new ContainerSetup(); IContainer container = containerSetup.BuildContainer(); container.Resolve <Magic8BallSimulator>().Run(); }
public void AppPluginsComposed_FromOnlyOtherAppPluginTypes() { ContainerSetup .Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>() .AddPluginType <MockTypeOneBasedOnKnownType>(); config.AddPlugin <MockCorePlugin>() .AddPluginType <MockTypeThreeBasedOnKnownType>(); config.AddPlugin <MockCorePlugin>() .AddPluginType <MockTypeTwoBasedOnKnownType>(); config.AddPlugin <MockAppComponentPlugin>() .AddPluginType <MockComposedModule>(); }) .Test( c => c.Build(), (MockComposedModule m) => { m.ImportedTypes.Should().NotBeNull(); m.ImportedTypes.Should().HaveCount(1); m.ImportedTypes.OfType <MockTypeOneBasedOnKnownType>().Should().HaveCount(1); }); }
public void CorePluginsComposed_FromAllOtherPluginTypes() { ContainerSetup .Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>() .AddPluginType <MockTypeOneBasedOnKnownType>(); config.AddPlugin <MockAppComponentPlugin>() .AddPluginType <MockTypeTwoBasedOnKnownType>(); config.AddPlugin <MockCorePlugin>() .AddPluginType <MockTypeThreeBasedOnKnownType>(); // This core plug-in contains a module that is composed // from types contained within the above plug-ins. config.AddPlugin <MockCorePlugin>() .AddPluginType <MockComposedModule>(); }) .Test( c => c.Build(), (MockComposedModule m) => { m.ImportedTypes.Should().NotBeNull(); m.ImportedTypes.Should().HaveCount(3); m.ImportedTypes.OfType <MockTypeOneBasedOnKnownType>().Should().HaveCount(1); m.ImportedTypes.OfType <MockTypeTwoBasedOnKnownType>().Should().HaveCount(1); m.ImportedTypes.OfType <MockTypeThreeBasedOnKnownType>().Should().HaveCount(1); }); }
public void WhenSettingsDerived_LoadsBaseAndDerivedProperties() { ContainerSetup .Arrange((TestTypeResolver resolver) => { resolver.DefaultSettingsConfig(); resolver.AddPlugin <MockCorePlugin>().AddPluginType <MockDerivedSettings>(); }) .Test(c => { c.WithConfig <EnvironmentConfig>(settings => { AddInMemorySettings(settings); }); c.Build(); }, (IAppContainer c) => { var settings = c.Services.Resolve <MockDerivedSettings>(); settings.Should().NotBeNull(); settings.Height.Should().Be(20); settings.Width.Should().Be(50); settings.Dialog.Colors.Frame.Should().Be("RED"); settings.Dialog.Colors.Title.Should().Be("DARK_RED"); }); }
public void CanInjectSettings_DirectlyIntoConsumer() { ContainerSetup .Arrange((TestTypeResolver resolver) => { resolver.DefaultSettingsConfig(); resolver.AddPlugin <MockCorePlugin>().AddPluginType <MockSetttings>(); }) .Test(c => { c.WithConfig <EnvironmentConfig>(settings => { AddInMemorySettings(settings); }); c.Build(); }, (IAppContainer c) => { var settings = c.Services.Resolve <MockSetttings>(); settings.Should().NotBeNull(); settings.Height.Should().Be(20); settings.Width.Should().Be(50); }); }
public void HostSpecifiedServices_Registered() { ContainerSetup .Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>(); }) .Test(c => { c.WithConfig <AutofacRegistrationConfig>(rc => { rc.Build = builder => { builder.RegisterType <MockHostServiceType>() .As <IMockHostServiceType>(); }; }); c.Build(); }, (IAppContainer c) => { var hostRegistration = c.Services.Resolve <IMockHostServiceType>(); hostRegistration.Should().NotBeNull(); hostRegistration.Should().BeOfType <MockHostServiceType>(); }); }
public void Configuration(IAppBuilder app) { Container = ContainerSetup.Setup(app); OwinSetup.Setup(app); ChannelSetup.Setup(app, Container); #region handles all api requests // CQRS EXECUTION app.Run((context => { var router = Container.Create <IRouter>(); var body = new Hashtable(); context.Response.StatusCode = 404; // default status code context.Response.Headers.Add("Content-Type", new string[] { "application/json" }); try { // CQRS ICommand command = router.Route(context.Request); body = command.Invoke(context).Result; } catch (Exception error) { context.Response.StatusCode = 500; body.Add("error", error.ToHashtable()); } return(context.Response.WriteAsync(JsonConvert.SerializeObject(body))); })); #endregion handles all api requests }
public static IAppContainer Create(MockAppHostPlugin hostPlugin, IServiceCollection services) { var resolver = new TestTypeResolver(); resolver.AddPlugin(hostPlugin); var container = ContainerSetup.Bootstrap(resolver); container.WithConfig((EnvironmentConfig envConfig) => { var configBuilder = new ConfigurationBuilder(); configBuilder.AddDefaultAppSettings(); envConfig.UseConfiguration(configBuilder.Build()); }) .WithConfig((AutofacRegistrationConfig config) => { config.Build = builder => { builder.Populate(services); }; }) .WithConfig((WebMvcConfig config) => { config.EnableRouteMetadata = true; config.UseServices(services); }); return(container); }
public void ComponentCanBeNotified_OnCreation() { ContainerSetup .Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>() .AddPluginType <MockActivatedType>(); }) .Test(c => { c.WithConfig <AutofacRegistrationConfig>(rc => { rc.Build = (bdr) => bdr.RegisterType <MockActivatedType>() .NotifyOnActivating() .AsSelf() .SingleInstance(); }); c.Build(); }, (IAppContainer c) => { var comp = c.Services.Resolve <MockActivatedType>(); comp.Should().NotBeNull(); comp.IsActivated.Should().BeTrue(); }); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); ContainerSetup.Setup(services, Configuration); services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); // Add framework services. services.AddMvc(options => { options.Filters.Add(new ApiExceptionFilter()); }) .AddJsonOptions(o => { o.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local; }); ; services.AddNodeServices(); // Register the Swagger generator, defining one or more Swagger documents services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "Expenses", Version = "v1" }); c.OperationFilter <AuthorizationHeaderParameterOperationFilter>(); }); }
public Task ExceptionsRecorded_ForEachEventHandler() { return(ContainerSetup.Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>() .AddPluginType <MockDomainEvent>() .AddPluginType <MockErrorMessageConsumer>(); config.AddPlugin <MockCorePlugin>() .UseMessagingPlugin(); }) .Test(async c => { c.WithConfig <AutofacRegistrationConfig>(regConfig => { regConfig.Build = builder => { builder.RegisterType <NullEntityScriptingService>() .As <IEntityScriptingService>() .SingleInstance(); }; }); c.Build(); var srv = c.Services.Resolve <IMessagingService>(); var evt = new MockDomainEvent(); await srv.PublishAsync(evt); }, (c, e) => { e.Should().NotBeNull(); e.Should().BeOfType <PublisherException>(); })); }
public void ModulesUsedTo_BootstrapPlugin() { Action <Plugin, Type> assertOneModule = (p, type) => p.PluginModules.Should() .HaveCount(1) .And.Subject.First().Should().BeOfType(type); ContainerSetup .Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>() .AddPluginType <MockPluginOneModule>(); config.AddPlugin <MockAppComponentPlugin>() .AddPluginType <MockPluginTwoModule>(); config.AddPlugin <MockCorePlugin>() .AddPluginType <MockPluginThreeModule>(); }) .Test( c => c.Build(), (CompositeApplication ca) => { assertOneModule(ca.AppHostPlugin, typeof(MockPluginOneModule)); assertOneModule(ca.AppComponentPlugins.First(), typeof(MockPluginTwoModule)); assertOneModule(ca.CorePlugins.First(), typeof(MockPluginThreeModule)); }); }
public void TypesLoaded_ForAppComponentPlugin() { ContainerSetup .Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>(); config.AddPlugin <MockAppComponentPlugin>() .AddPluginType <MockOneType>(); }) .Test( c => c.Build(), (CompositeApplication ca) => { var appComponentPlugin = ca.AppComponentPlugins.First(); // Type assignment: appComponentPlugin.PluginTypes.Should().HaveCount(1); appComponentPlugin.PluginTypes.Select(pt => pt.Type).Contains(typeof(MockOneType)); // Categorized Types: ca.GetPluginTypes().Should().HaveCount(1); ca.GetPluginTypes(PluginTypes.AppComponentPlugin).Should().HaveCount(1); ca.GetPluginTypes(PluginTypes.CorePlugin, PluginTypes.AppHostPlugin).Should().HaveCount(0); }); }
static void Main() { Thread.CurrentThread.SetApartmentState(ApartmentState.STA); var setup = new ContainerSetup(); using (var game = new XDii()) game.Run(); }
public AutofacTest() { var connectionString = ConfigurationManager.ConnectionStrings["AppCnn"].ConnectionString; var ioCContainer = ConfigurationManager.AppSettings["IoCContainer"]; var dbORM = ConfigurationManager.AppSettings["ORM"]; serviceProvider = ContainerSetup.Init(ioCContainer, connectionString, dbORM); }
public void Should_Raise_SolException_When_Application_IConfigurationSection_Does_Not_Exists() { // Arrange IConfiguration config = ConfigurationSetup.BuildConfiguration(SolTestsConstants.NoAppSectionAppSettings); IServiceCollection services = ContainerSetup.EmptyServiceCollection(); // Act/Assert Assert.Throws <SolException>(() => services.AddSol(config)); }
public void Should_Raise_SolException_When_Project_Is_Null_Or_Empty() { // Arrange IConfiguration config = ConfigurationSetup.BuildConfiguration(SolTestsConstants.NoProjectAppSettings); IServiceCollection services = ContainerSetup.EmptyServiceCollection(); // Act/Assert Assert.Throws <SolException>(() => services.AddSol(config)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { ContainerSetup.Setup(services, Configuration); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, (o) => { o.TokenValidationParameters = new TokenValidationParameters() { ValidAudience = TokenAuthOption.Audience, IssuerSigningKey = TokenAuthOption.key, ValidIssuer = TokenAuthOption.Issuer, ValidateLifetime = true, ValidateAudience = true, ValidateIssuerSigningKey = true, ValidateIssuer = true, ClockSkew = TimeSpan.FromMinutes(0) }; }); services.AddAuthorization(auth => { auth.AddPolicy(JwtBearerDefaults.AuthenticationScheme, new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); //services.AddMvc(); services.AddMvc(setupAction => { setupAction.Filters.Add(new ApiExceptionFilter()); var policy = new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build(); // setupAction.Filters.Add(new CustomAuthorizeFilter(policy)); }) .AddJsonOptions(o => { o.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local; }); services.AddNodeServices(); // Register the Swagger generator, defining one or more Swagger documents services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "Monefy", Version = "v1" }); c.OperationFilter <AuthorizationHeaderParameterOperationFilter>(); }); services.AddCors(); }
private static IContainer buildContainer(IConfigurationRoot configuration) { return(ContainerSetup.Build(configuration) .WithJsonHighSchoolRepository() .WithPostgresStudentRepository() .WithStudentDirectionsResponseClasses() .WithStudentStaticMapClasses() .WithMappers() .Build()); }
public void ConcretionClassWithMultipleConstructorsIsRegisteredCorrectly() { // arrange var sut = new ContainerSetup(); var act = new Action(() => sut.RetrieveConcretionClassesRequiringRegistration(true)); // act // assert act.Should().NotThrow <Exception>(); }
public void RegistrationOfDisposableConcretionClassDoesNotThrowAnException() { // arrange var sut = new ContainerSetup(); var act = new Action(() => sut.RetrieveConcretionClassesRequiringRegistration(true)); // act // assert act.Should().NotThrow <Exception>(); }
public void RegisteringAttributedDisposableTransientDoesNotThrowAnException() { // arrange var sut = new ContainerSetup(); var act = new Action(() => sut.RetrieveClassesRequiringRegistration(true)); // act // assert act.ShouldNotThrow <Exception>(); }
public void NotReturningAnEmptyListOfAvailableHandlers() { var container = ContainerSetup.BaseAutofacInitialization(); var domainEventDispatcher = new DomainEventDispatcher(container); var todoItemCompletedEvent = new TodoItemCompletedEvent(new TodoItem()); var handlersForEvent = domainEventDispatcher.GetWrappedHandlers(todoItemCompletedEvent); Assert.IsNotEmpty(handlersForEvent); }
public void ConcretionClassWithMultipleConstructorsIsRegisteredCorrectly() { // arrange var serviceCollection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); var sut = new ContainerSetup(serviceCollection); var act = new Action(() => sut.RetrieveConcretionClassesRequiringRegistration(true)); // act // assert act.Should().NotThrow <Exception>(); }
static void Main(string[] args) { var container = new ContainerSetup().BuildContainer(); using (var game = container.Resolve<IGameEngine>()) { game.Bus.Messages.Subscribe(Console.WriteLine); game.Start(); Console.ReadLine(); } Console.ReadLine(); }
public void Composite_Application_Has_AppHost_Plugin() { ContainerSetup .Arrange((TestTypeResolver config) => { config.AddPlugin <MockAppHostPlugin>(); }) .Test( c => c.Build(), (CompositeApplication ca) => ca.AppHostPlugin.Should().NotBeNull()); }
public void Must_Have_One_AppHostPlugin() { ContainerSetup .Arrange((TestTypeResolver config) => { }) .Test( c => c.Build(), (c, e) => { e.Should().BeOfType <ContainerException>(); }); }
public IServiceProvider ConfigureProductionServices(IServiceCollection services) { // Add database services.AddDbContext(Configuration.GetConnectionString("AppConnection")); services.AddDbContext <AppDbContext>(c => c.UseSqlServer(Configuration.GetConnectionString("AppConnection"))); ConfigureServices(services); return(ContainerSetup.InitializeWeb(Assembly.GetExecutingAssembly(), services)); }