/// <summary>
        /// Create <see cref="HomeControllerTests"/>.
        /// </summary>
        public HomeControllerTests()
        {
            // Dependencies initializations
            var connection = InMemoryConnectionHelper.SetupConnection();

            var services = new ServiceCollection();

            services.AddEntityFrameworkSqlite()
            .AddDbContext <DataDbContext>(options =>
                                          options.UseSqlite(connection),
                                          ServiceLifetime.Transient
                                          );

            var serviceProvider = services.BuildServiceProvider();

            _pageConfiguration = new FakePageConfiguration();

            _dataDbContext = serviceProvider.GetService <DataDbContext>();
            _dataDbContext.Database.EnsureCreated();

            var contentRepository           = new ContentViewerRepository(_dataDbContext);
            var humanReadableContentService = new HumanReadableContentRetrievalService(_pageConfiguration, contentRepository);

            ILanguageManipulationService languageManipulationService = new LanguageManipulationService();

            // Controller initialization
            _homeController = new HomeController(
                _pageConfiguration,
                humanReadableContentService,
                languageManipulationService
                );
        }
Пример #2
0
        public PageViewModel(
            IPageConfiguration pageConfiguration,
            LanguageDefinition language,
            ContentViewModel contentViewModel,
            ContentLinksViewModel contentLinksViewModel)
        {
            if(pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if (contentViewModel == null)
            {
                throw new ArgumentNullException(nameof(contentViewModel));
            }

            if(contentLinksViewModel == null)
            {
                throw new ArgumentNullException(nameof(contentLinksViewModel));
            }

            _pageConfiguration = pageConfiguration;
            Language = language;
            ContentViewModel = contentViewModel;
            ContentLinksViewModel = contentLinksViewModel;
        }
Пример #3
0
        public void Configure(
            IApplicationBuilder app,
            IHostEnvironment env,
            IPageConfiguration pageConfiguration,
            ILanguageManipulationService languageManipulationService,
            IEndpointsBuilder endpointsBuilder)
        {
            app.UseStatusCodePagesWithReExecute("/errors/{0}");

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStaticFiles();

            var defaultCulture = languageManipulationService
                                 .LanguageDefinitionToCultureInfo(
                pageConfiguration.DefaultLanguage
                );

            app.UseRequestLocalization(new RequestLocalizationOptions
            {
                SupportedCultures       = languageManipulationService.SupportedCultures,
                SupportedUICultures     = languageManipulationService.SupportedCultures,
                RequestCultureProviders = new IRequestCultureProvider[] { new CustomUrlStringCultureProvider(languageManipulationService) },
                DefaultRequestCulture   = new RequestCulture(defaultCulture, defaultCulture)
            }
                                       );

            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpointsBuilder.Build);
        }
Пример #4
0
        public PageViewModel(
            IPageConfiguration pageConfiguration,
            LanguageDefinition language,
            ContentViewModel contentViewModel,
            ContentLinksViewModel contentLinksViewModel)
        {
            if (pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if (contentViewModel == null)
            {
                throw new ArgumentNullException(nameof(contentViewModel));
            }

            if (contentLinksViewModel == null)
            {
                throw new ArgumentNullException(nameof(contentLinksViewModel));
            }

            _pageConfiguration    = pageConfiguration;
            Language              = language;
            ContentViewModel      = contentViewModel;
            ContentLinksViewModel = contentLinksViewModel;
        }
Пример #5
0
        /// <summary>
        /// Create <see cref="HomeControllerTests"/>.
        /// </summary>
        public HomeControllerTests()
        {
            // Database setup
            var services = new ServiceCollection();

            services.AddEntityFrameworkInMemoryDatabase()
            .AddDbContext <DataDbContext>(options =>
                                          options.UseInMemoryDatabase()
                                          );

            // Dependencies initializations
            _pageConfiguration = new FakePageConfiguration();

            var optionsBuilder = new DbContextOptionsBuilder <DataDbContext>();

            optionsBuilder.UseInMemoryDatabase();
            _dataDbContext = new DataDbContext(optionsBuilder.Options);

            _contentRepository           = new ContentRepository(_dataDbContext);
            _humanReadableContentService = new HumanReadableContentRetrievalService(_pageConfiguration, _contentRepository);

            _languageManipulationService = new LanguageManipulationService();

            // Controller initialization
            _homeController = new HomeController(
                _pageConfiguration,
                _humanReadableContentService,
                _languageManipulationService
                );
        }
        public HomeControllerTests()
        {
            // Database setup
            var services = new ServiceCollection();
            services.AddEntityFramework()
                    .AddSqlServer()
                    .AddInMemoryDatabase()
                    .AddDbContext<DataDbContext>(options =>
                        options.UseInMemoryDatabase()
                    );

            // Dependencies initializations
            _pageConfiguration = new FakePageConfiguration();

            var optionsBuilder = new DbContextOptionsBuilder<DataDbContext>();
            optionsBuilder.UseInMemoryDatabase();
            _dataDbContext = new DataDbContext(optionsBuilder.Options);

            _contentRepository = new ContentRepository(_dataDbContext);
            _humanReadableContentService = new HumanReadableContentService(_pageConfiguration, _contentRepository);

            _languageManipulationService = new LanguageManipulationService();

            // Controller initialization
            _homeController = new PersonalWebsite.Controllers.HomeController(
                _pageConfiguration,
                _humanReadableContentService,
                _languageManipulationService
            );
        }
 /// <summary>
 /// Create <see cref="HumanReadableContentRetrievalService"/>.
 /// </summary>
 /// <param name="pageConfiguration">Page configuration.</param>
 /// <param name="contentRepository">Content repository.</param>
 public HumanReadableContentRetrievalService(
     IPageConfiguration pageConfiguration,
     IContentViewerRepository contentRepository)
 {
     _contentRepository = contentRepository ?? throw new ArgumentNullException(nameof(contentRepository));
     _pageConfiguration = pageConfiguration ?? throw new ArgumentNullException(nameof(pageConfiguration));
 }
Пример #8
0
 public UrlLanguagePrefixer(
     IPageConfiguration pageConfiguration,
     ILanguageManipulationService languageManipulationService)
 {
     _pageConfiguration           = pageConfiguration ?? throw new ArgumentNullException(nameof(pageConfiguration));
     _languageManipulationService = languageManipulationService ?? throw new ArgumentNullException(nameof(languageManipulationService));
 }
Пример #9
0
 /// <summary>
 /// Create <see cref="HomeController"/>.
 /// </summary>
 /// <param name="pageConfiguration">Page configuration.</param>
 /// <param name="humanReadableContentService">Human-readable content retrieval service.</param>
 /// <param name="languageManipulationService">Language manipulation service.</param>
 public HomeController(
     IPageConfiguration pageConfiguration,
     IHumanReadableContentRetrievalService humanReadableContentService,
     ILanguageManipulationService languageManipulationService)
 {
     _pageConfiguration           = pageConfiguration ?? throw new ArgumentNullException(nameof(pageConfiguration));
     _humanReadableContentService = humanReadableContentService ?? throw new ArgumentNullException(nameof(humanReadableContentService));
     _languageManipulationService = languageManipulationService ?? throw new ArgumentNullException(nameof(languageManipulationService));
 }
Пример #10
0
        // Configure is called after ConfigureServices is called.
        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env,
            ILoggerFactory loggerFactory,
            IPageConfiguration pageConfiguration,
            ILanguageManipulationService languageManipulationService,
            IRoutesBuilder routesBuilder)
        {
            loggerFactory.AddConsole();

            // Configure the HTTP request pipeline.

            // Add the following to the request pipeline only in development environment.
            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();

                loggerFactory.AddDebug(LogLevel.Debug);
            }
            else
            {
                loggerFactory.AddDebug(LogLevel.Critical);
            }

            // Add static files to the request pipeline.
            app.UseStaticFiles();

            // Add cookie-based authentication to the request pipeline.
            app.UseIdentity();


            var defaultCulture = languageManipulationService
                                 .LanguageDefinitionToCultureInfo(
                pageConfiguration.DefaultLanguage
                );

            app.UseRequestLocalization(new RequestLocalizationOptions
            {
                SupportedCultures       = languageManipulationService.SupportedCultures,
                SupportedUICultures     = languageManipulationService.SupportedCultures,
                RequestCultureProviders = new[] { new CustomUrlStringCultureProvider(languageManipulationService) },
                DefaultRequestCulture   = new RequestCulture(defaultCulture, defaultCulture)
            }
                                       );

            app.UseMvc(routesBuilder.Build);

            using (var dataInitializer = new DataInitializer(app.ApplicationServices))
            {
                dataInitializer.EnsureRequiredContentsAvailable();
                dataInitializer.EnsureInitialUserAvaialble();
            }
        }
        public HumanReadableContentService(
            IPageConfiguration pageConfiguration,
            IContentRepository contentRespository)
        {
            if (pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if (contentRespository == null)
            {
                throw new ArgumentNullException(nameof(contentRespository));
            }
            _contentRepository = contentRespository;
            _pageConfiguration = pageConfiguration;
        }
        public HumanReadableContentService(
            IPageConfiguration pageConfiguration,
            IContentRepository contentRespository)
        {
            if(pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if(contentRespository == null)
            {
                throw new ArgumentNullException(nameof(contentRespository));
            }
            _contentRepository = contentRespository;
            _pageConfiguration = pageConfiguration;
        }
        public UrlLanguagePrefixer(
            IPageConfiguration pageConfiguration,
            ILanguageManipulationService languageManipulationService)
        {
            if(pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if(languageManipulationService == null)
            {
                throw new ArgumentNullException(nameof(languageManipulationService));
            }

            _pageConfiguration = pageConfiguration;
            _languageManipulationService = languageManipulationService;
        }
Пример #14
0
        /// <summary>
        /// Create <see cref="PageViewModel"/>.
        /// </summary>
        /// <param name="pageConfiguration">Page configuration.</param>
        /// <param name="language">Language.</param>
        /// <param name="contentPublicViewData">Content view data.</param>
        /// <param name="contentPublicLinksData">Content links data.</param>
        public PageViewModel(
            IPageConfiguration pageConfiguration,
            LanguageDefinition language,
            ContentPublicViewData contentPublicViewData,
            ContentPublicLinksData contentPublicLinksData)
        {
            if (contentPublicViewData == null)
            {
                throw new ArgumentNullException(nameof(contentPublicViewData));
            }

            if (contentPublicLinksData == null)
            {
                throw new ArgumentNullException(nameof(contentPublicLinksData));
            }

            _pageConfiguration    = pageConfiguration ?? throw new ArgumentNullException(nameof(pageConfiguration));
            Language              = language;
            ContentViewModel      = new ContentViewModel(contentPublicViewData);
            ContentLinksViewModel = new ContentLinksViewModel(contentPublicLinksData);
        }
Пример #15
0
        /// <summary>
        /// Create <see cref="ContentsController"/>.
        /// </summary>
        /// <param name="pageConfiguration">Page configuration.</param>
        /// <param name="humanReadableContentService">Human-readable content retrieval service.</param>
        /// <param name="languageManipulationService">Language manipulation service.</param>
        public ContentsController(
            IPageConfiguration pageConfiguration,
            IHumanReadableContentRetrievalService humanReadableContentService,
            ILanguageManipulationService languageManipulationService)
        {
            if (pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if (humanReadableContentService == null)
            {
                throw new ArgumentNullException(nameof(humanReadableContentService));
            }

            if (languageManipulationService == null)
            {
                throw new ArgumentNullException(nameof(languageManipulationService));
            }

            _humanReadableContentService = humanReadableContentService;
            _languageManipulationService = languageManipulationService;
            _pageConfiguration           = pageConfiguration;
        }
Пример #16
0
        public HomeController(
            IPageConfiguration pageConfiguration,
            IHumanReadableContentService humanReadableContentService,
            ILanguageManipulationService languageManipulationService)
        {
            if(pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if(humanReadableContentService == null)
            {
                throw new ArgumentNullException(nameof(humanReadableContentService));
            }

            if(languageManipulationService == null)
            {
                throw new ArgumentNullException(nameof(languageManipulationService));
            }

            _pageConfiguration = pageConfiguration;
            _humanReadableContentService = humanReadableContentService;
            _languageManipulationService = languageManipulationService;
        }
Пример #17
0
        // Configure is called after ConfigureServices is called.
        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env,
            ILoggerFactory loggerFactory,
            IPageConfiguration pageConfiguration,
            ILanguageManipulationService languageManipulationService)
        {
            if (pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if (languageManipulationService == null)
            {
                throw new ArgumentNullException(nameof(languageManipulationService));
            }

            loggerFactory.MinimumLevel = LogLevel.Warning;
            loggerFactory.AddConsole();

            // Configure the HTTP request pipeline.

            // Add the following to the request pipeline only in development environment.
            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage(x => x.EnableAll());

                loggerFactory.AddDebug(LogLevel.Debug);
            }
            else
            {
                // Add Error handling middleware which catches all application specific errors and
                // sends the request to the following path or controller action.
                app.UseExceptionHandler("/Home/Error");

                loggerFactory.AddDebug(LogLevel.Critical);
            }

            // Add the platform handler to the request pipeline.
            app.UseIISPlatformHandler();

            // Add static files to the request pipeline.
            app.UseStaticFiles();

            // Add cookie-based authentication to the request pipeline.
            app.UseIdentity();

            var defaultCulture = languageManipulationService
                                 .LanguageDefinitionToCultureInfo(
                pageConfiguration.DefaultLanguage
                );

            app.UseRequestLocalization(new RequestLocalizationOptions
            {
                SupportedCultures       = languageManipulationService.SupportedCultures,
                SupportedUICultures     = languageManipulationService.SupportedCultures,
                RequestCultureProviders = new[] { new CustomUrlStringCultureProvider(languageManipulationService) }
            },
                                       new RequestCulture(defaultCulture, defaultCulture)
                                       );

            // Add MVC to the request pipeline.
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: nameof(PersonalWebsite.Areas.Private),
                    template: "{area}/{controller}/{action}/{id?}",
                    defaults: new { },
                    constraints: new { area = "private" });
                routes.MapRoute(
                    name: "defaultWithLanguage",
                    template: "{language}/{controller=Home}/{action=Index}",
                    defaults: new { },
                    constraints: new { language = languageManipulationService.LanguageValidationRegexp() }
                    );
                routes.MapRoute(
                    name: "defaultWithoutLanguage",
                    template: "{controller=Home}/{action=Index}",
                    defaults: new { language = String.Empty }
                    );

                routes.MapRoute(
                    name: "contentsWithLanguage",
                    template: "{language}/{urlName}/{controller=Contents}/{action=Show}",
                    defaults: new { },
                    constraints: new { language = languageManipulationService.LanguageValidationRegexp() }
                    );
                routes.MapRoute(
                    name: "contentsWithoutLanguage",
                    template: "{urlName}/{controller=Contents}/{action=Show}"
                    );
            });

            using (var dataInitializer = new DataInitializer(app.ApplicationServices))
            {
                if (env.IsDevelopment())
                {
                    dataInitializer.ClearRequiredContents();
                    dataInitializer.ClearInitialUser();
                }

                dataInitializer.EnsureRequiredContentsAvailable();
                dataInitializer.EnsureInitialUserAvaialble();
            }
        }
Пример #18
0
        // Configure is called after ConfigureServices is called.
        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env,
            ILoggerFactory loggerFactory,
            IPageConfiguration pageConfiguration,
            ILanguageManipulationService languageManipulationService)
        {
            if(pageConfiguration == null)
            {
                throw new ArgumentNullException(nameof(pageConfiguration));
            }

            if(languageManipulationService == null)
            {
                throw new ArgumentNullException(nameof(languageManipulationService));
            }

            loggerFactory.MinimumLevel = LogLevel.Warning;
            loggerFactory.AddConsole();

            // Configure the HTTP request pipeline.

            // Add the following to the request pipeline only in development environment.
            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage(x => x.EnableAll());

                loggerFactory.AddDebug(LogLevel.Debug);
            }
            else
            {
                // Add Error handling middleware which catches all application specific errors and
                // sends the request to the following path or controller action.
                app.UseExceptionHandler("/Home/Error");

                loggerFactory.AddDebug(LogLevel.Critical);
            }

            // Add the platform handler to the request pipeline.
            app.UseIISPlatformHandler();

            // Add static files to the request pipeline.
            app.UseStaticFiles();

            // Add cookie-based authentication to the request pipeline.
            app.UseIdentity();

            var defaultCulture = languageManipulationService
                                   .LanguageDefinitionToCultureInfo(
                                      pageConfiguration.DefaultLanguage
                                   );
            app.UseRequestLocalization(new RequestLocalizationOptions
                {
                    SupportedCultures = languageManipulationService.SupportedCultures,
                    SupportedUICultures = languageManipulationService.SupportedCultures,
                    RequestCultureProviders = new[] { new CustomUrlStringCultureProvider(languageManipulationService) }
                }, 
                new RequestCulture(defaultCulture, defaultCulture)
            );

            // Add MVC to the request pipeline.
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: nameof(PersonalWebsite.Areas.Private),
                    template: "{area}/{controller}/{action}/{id?}",
                    defaults: new { },
                    constraints: new { area = "private" });
                routes.MapRoute(
                    name: "defaultWithLanguage",
                    template: "{language}/{controller=Home}/{action=Index}",
                    defaults: new { },
                    constraints: new { language = languageManipulationService.LanguageValidationRegexp() }
                );
                routes.MapRoute(
                    name: "defaultWithoutLanguage",
                    template: "{controller=Home}/{action=Index}",
                    defaults: new { language=String.Empty }
                );

                routes.MapRoute(
                    name: "contentsWithLanguage",
                    template: "{language}/{urlName}/{controller=Contents}/{action=Show}",
                    defaults: new { },
                    constraints: new { language = languageManipulationService.LanguageValidationRegexp() }
                );
                routes.MapRoute(
                    name: "contentsWithoutLanguage",
                    template: "{urlName}/{controller=Contents}/{action=Show}"
                );
            });

            using (var dataInitializer = new DataInitializer(app.ApplicationServices))
            {
                if (env.IsDevelopment())
                {
                    dataInitializer.ClearRequiredContents();
                    dataInitializer.ClearInitialUser();
                }

                dataInitializer.EnsureRequiredContentsAvailable();
                dataInitializer.EnsureInitialUserAvaialble();
            }
        }
Пример #19
0
 /// <summary>
 /// Activates the page number property as specified in <see cref="IPageConfiguration.RequestProperty"/>.
 /// </summary>
 /// <param name="configuration"></param>
 /// <param name="model"></param>
 protected virtual void ActivatePage(IPageConfiguration configuration, object model) =>
 configuration?.RequestProperty?.SetValue(model, configuration.DefaultValue);