Пример #1
0
        public void Should_return_false_if_page_url_is_not_valid(string url)
        {
            var sut    = new PageRules(new Mock <IPageRepository>().Object);
            var actual = sut.IsPageUrlValid(url);

            Assert.AreEqual(false, actual);
        }
Пример #2
0
        public void Should_return_true_if_page_name_is_valid(string name)
        {
            var sut    = new PageRules(new Mock <IPageRepository>().Object);
            var actual = sut.IsPageNameValid(name);

            Assert.AreEqual(true, actual);
        }
Пример #3
0
        public void Should_return_true_if_page_url_is_reserved(string url)
        {
            var sut    = new PageRules(new Mock <IPageRepository>().Object);
            var actual = sut.IsPageUrlReserved(url);

            Assert.AreEqual(true, actual);
        }
Пример #4
0
        public void Should_return_true_if_page_id_is_unique()
        {
            var id = Guid.NewGuid();

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetById(id)).Returns((Page)null);

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsPageIdUnique(id);

            Assert.AreEqual(true, actual);
        }
Пример #5
0
        public void Should_return_true_if_page_exists()
        {
            var id = Guid.NewGuid();

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetById(id)).Returns(new Page());

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.DoesPageExist(id);

            Assert.AreEqual(true, actual);
        }
Пример #6
0
        public void Should_return_true_if_localised_slug_is_unique_for_existing_pages()
        {
            var siteId = Guid.NewGuid();
            var slug   = "my-page";

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetPageIdByLocalisedSlug(siteId, slug)).Returns(Guid.Empty);

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsSlugUnique(siteId, slug, Guid.NewGuid());

            Assert.AreEqual(true, actual);
        }
Пример #7
0
        public void Should_return_true_if_page_url_is_unique()
        {
            var siteId = Guid.NewGuid();
            var url    = "my-page";

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetPageIdBySlug(siteId, url)).Returns(Guid.Empty);

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsSlugUnique(siteId, url);

            Assert.AreEqual(true, actual);
        }
Пример #8
0
        public void Should_return_true_if_page_name_is_unique()
        {
            var siteId = Guid.NewGuid();
            var name   = "My Page";

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetPageIdByName(siteId, name)).Returns(Guid.Empty);

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsPageNameUnique(siteId, name);

            Assert.AreEqual(true, actual);
        }
Пример #9
0
        public void Should_return_false_if_page_url_is_not_unique()
        {
            var siteId = Guid.NewGuid();
            var url    = "my-page";

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetByUrl(siteId, url)).Returns(new Page());

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsPageUrlUnique(siteId, url);

            Assert.AreEqual(false, actual);
        }
Пример #10
0
        public void Should_return_false_if_page_url_is_not_unique_for_existing_pages()
        {
            var siteId = Guid.NewGuid();
            var pageId = Guid.NewGuid();
            var url    = "my-page";

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetPageIdBySlug(siteId, url)).Returns(Guid.NewGuid());

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsSlugUnique(siteId, url, pageId);

            Assert.AreEqual(false, actual);
        }
Пример #11
0
        public void Should_return_true_if_page_url_is_unique_for_existing_pages()
        {
            var siteId = Guid.NewGuid();
            var pageId = Guid.NewGuid();
            var url    = "my-page";

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetByUrl(siteId, url)).Returns((Page)null);

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsPageUrlUnique(siteId, url, pageId);

            Assert.AreEqual(true, actual);
        }
Пример #12
0
        public void Should_return_false_if_page_name_is_not_unique_for_existing_pages()
        {
            var siteId = Guid.NewGuid();
            var pageId = Guid.NewGuid();
            var name   = "my-page";

            var repositoryMock = new Mock <IPageRepository>();

            repositoryMock.Setup(x => x.GetByName(siteId, name)).Returns(new Page());

            var sut = new PageRules(repositoryMock.Object);

            var actual = sut.IsPageNameUnique(siteId, name, pageId);

            Assert.AreEqual(false, actual);
        }
Пример #13
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //----------------------------------------------------
            IConfigService configService     = new XMLConfigService("Config.xml");
            IMessenger     messenger_sms     = new SmsMessenger();
            IMessenger     messenger_email   = new EmailMessenger();
            IPassHasher    passHasher        = new SHA256Hasher();
            IKeyGenerator  smallKeyGenerator = new SmallKeyGenerator();
            IKeyGenerator  bigKeyGenerator   = new BigKeyGenerator();
            IRegValidator  regValidator      = new RegValidator();
            IUOWFactory    UOWFactory        = new EFUOWFactory(configService.ConnectionString);
            IGetUserDTO    getUserDTO        = new GetUserDTO();

            //----------------------------------------------------
            IClaimService claimService = new ClaimService(UOWFactory);

            //----------------------------------------------------
            services.AddSingleton <IConfigService, IConfigService>(
                serviceProvider =>
            {
                return(configService);
            }
                );
            //----------------------------------------------------
            services.AddSingleton <IGetUserDTO, IGetUserDTO>(
                serviceProvider =>
            {
                return(getUserDTO);
            }
                );
            //----------------------------------------------------
            services.AddSingleton <IUOWFactory, IUOWFactory>(
                serviceProvider =>
            {
                return(UOWFactory);
            }
                );

            services.AddSingleton <IClaimService, ClaimService>();
            //-----------------------------------------------------

            services.AddSingleton <IUserService, UserAuthService>(
                serviceProvider =>
            {
                return(new UserAuthService(
                           UOWFactory,
                           new AuthKeyService(smallKeyGenerator, messenger_sms),
                           new AuthKeyService(smallKeyGenerator, messenger_email),
                           passHasher,
                           regValidator,
                           claimService,
                           bigKeyGenerator,
                           getUserDTO
                           ));
            }
                );

            services.AddSingleton <IProfileService, ProfileService>(
                serviceProvider =>
            {
                IConfirmService emailCS = new ConfirmService(
                    new ConfirmKeyService(bigKeyGenerator, messenger_email)
                    );
                IConfirmService phoneCS = new ConfirmService(
                    new ConfirmKeyService(smallKeyGenerator, messenger_sms)
                    );
                return(new ProfileService(
                           UOWFactory,
                           regValidator,
                           emailCS,
                           phoneCS,
                           passHasher,
                           claimService,
                           getUserDTO
                           ));
            }
                );

            services.AddSingleton <IRestorePasswordService, RestorePasswordService>(
                serviceProvider =>
            {
                var emaiCKS  = new ConfirmKeyService(bigKeyGenerator, messenger_email);
                var phoneCKS = new ConfirmKeyService(smallKeyGenerator, messenger_sms);
                return(new RestorePasswordService(UOWFactory, emaiCKS, phoneCKS, new RegValidator(), passHasher));
            }
                );
            //---------Forum Services--------------------------------
            IGroupRules     groupRules     = new GroupRules();
            ISectionRules   sectionRules   = new SectionRules(groupRules);
            IThemeRules     themeRules     = new ThemeRules(sectionRules);
            IMessageRules   messageRules   = new MessageRules(themeRules, sectionRules);
            IDTOHelper      dtoHelper      = new DTOHelper();
            IForumDTOHelper forumDTOHelper = new ForumDTOHelper(messageRules, themeRules, sectionRules, groupRules, dtoHelper);

            services.AddSingleton <IGroupService, GroupService>(
                serviceProvider =>
            {
                return(new GroupService(groupRules, getUserDTO, UOWFactory, forumDTOHelper));
            }
                );

            services.AddSingleton <ISectionService, SectionService>(
                serviceProvider =>
            {
                return(new SectionService(sectionRules, getUserDTO, UOWFactory, forumDTOHelper));
            }
                );

            services.AddSingleton <IThemeService, ThemeService>(
                serviceProvider =>
            {
                return(new ThemeService(themeRules, getUserDTO, UOWFactory, forumDTOHelper));
            }
                );

            services.AddSingleton <IMessageService, MessageService>(
                serviceProvider =>
            {
                return(new MessageService(messageRules, getUserDTO, UOWFactory, forumDTOHelper));
            }
                );

            services.AddSingleton <IForumService, ForumService>(
                serviceProvider =>
            {
                return(new ForumService(getUserDTO, UOWFactory, forumDTOHelper, groupRules));
            }
                );
            //--------------------Page Services--------------------
            IPageRules pageRules = new PageRules();
            INoteRules noteRules = new NoteRules();

            services.AddSingleton <IPageService, PageService>(
                serviceProvider =>
            {
                return(new PageService(pageRules, UOWFactory, getUserDTO, dtoHelper));
            }
                );

            services.AddSingleton <IBlogService, BlogService>(
                serviceProvider =>
            {
                return(new BlogService(noteRules, UOWFactory, getUserDTO, dtoHelper));
            }
                );

            //-------------------------------------------------------
            services.AddSingleton <IImageService, ImageService>(
                serviceProvider =>
            {
                return(new ImageService(UOWFactory, getUserDTO));
            }
                );
            //-------------------------------------------
            services.AddSingleton <IAdminService, AdminService>(
                serviceProvider =>
            {
                return(new AdminService(getUserDTO, UOWFactory));
            }
                );

            services.Configure <FormOptions>(x =>
            {
                x.ValueCountLimit          = int.MaxValue;
                x.MemoryBufferThreshold    = int.MaxValue;
                x.ValueLengthLimit         = int.MaxValue;
                x.MultipartBodyLengthLimit = int.MaxValue; // In case of multipart
            });
            //------------------------------------------------------
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>
            {
                options.LoginPath  = new Microsoft.AspNetCore.Http.PathString("/Account/Login");
                options.LogoutPath = new Microsoft.AspNetCore.Http.PathString("/Account/Logout");
                options.Events.OnValidatePrincipal = PrincipalValidator.ValidateAsync;
            });

            services.AddMvc();
        }