Пример #1
0
        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();
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
            });
        }
Пример #4
0
        public static void Main(string[] args)
        {
            ContainerSetup containerSetup = new ContainerSetup();
            IContainer     container      = containerSetup.BuildContainer();

            container.Resolve <Magic8BallSimulator>().Run();
        }
Пример #5
0
        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);
            });
        }
Пример #6
0
        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);
            });
        }
Пример #7
0
        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");
            });
        }
Пример #8
0
        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);
            });
        }
Пример #9
0
 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>();
     });
 }
Пример #10
0
        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
        }
Пример #11
0
        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);
        }
Пример #12
0
        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();
            });
        }
Пример #13
0
        // 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>();
            }));
        }
Пример #15
0
        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));
            });
        }
Пример #16
0
        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);
            });
        }
Пример #17
0
        static void Main()
        {
            Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
            var setup = new ContainerSetup();

            using (var game = new XDii())
                game.Run();
        }
Пример #18
0
        public AutofacTest()
        {
            var connectionString = ConfigurationManager.ConnectionStrings["AppCnn"].ConnectionString;
            var ioCContainer     = ConfigurationManager.AppSettings["IoCContainer"];
            var dbORM            = ConfigurationManager.AppSettings["ORM"];

            serviceProvider = ContainerSetup.Init(ioCContainer, connectionString, dbORM);
        }
Пример #19
0
        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));
        }
Пример #20
0
        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));
        }
Пример #21
0
        // 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();
        }
Пример #22
0
 private static IContainer buildContainer(IConfigurationRoot configuration)
 {
     return(ContainerSetup.Build(configuration)
            .WithJsonHighSchoolRepository()
            .WithPostgresStudentRepository()
            .WithStudentDirectionsResponseClasses()
            .WithStudentStaticMapClasses()
            .WithMappers()
            .Build());
 }
Пример #23
0
        public void ConcretionClassWithMultipleConstructorsIsRegisteredCorrectly()
        {
            // arrange
            var sut = new ContainerSetup();
            var act = new Action(() => sut.RetrieveConcretionClassesRequiringRegistration(true));

            // act
            // assert
            act.Should().NotThrow <Exception>();
        }
Пример #24
0
        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>();
        }
Пример #26
0
        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);
        }
Пример #27
0
        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>();
        }
Пример #28
0
 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();
 }
Пример #29
0
 public void Composite_Application_Has_AppHost_Plugin()
 {
     ContainerSetup
     .Arrange((TestTypeResolver config) =>
     {
         config.AddPlugin <MockAppHostPlugin>();
     })
     .Test(
         c => c.Build(),
         (CompositeApplication ca) => ca.AppHostPlugin.Should().NotBeNull());
 }
Пример #30
0
 public void Must_Have_One_AppHostPlugin()
 {
     ContainerSetup
     .Arrange((TestTypeResolver config) => { })
     .Test(
         c => c.Build(),
         (c, e) =>
     {
         e.Should().BeOfType <ContainerException>();
     });
 }
Пример #31
0
        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));
        }