public void LookingForTagAmongTagsWithDifferentPopularity_GetSortedResultList() { //Arrange var tagRepository = new InMemoryTagRepository(); tagRepository.Add("Tag1"); tagRepository.Add("Tag2"); tagRepository.Add("Tag3"); var tagFacade = new TagFacade(tagRepository); tagFacade.UseTag("Tag1"); tagFacade.UseTag("Tag2"); tagFacade.UseTag("Tag2"); tagFacade.UseTag("Tag2"); tagFacade.UseTag("Tag3"); tagFacade.UseTag("Tag3"); //Act var expectedTags = new List <string> { "Tag2", "Tag3", "Tag1" }; var actualTags = tagFacade.FindTag("Tag").ToList(); //Assert Assert.AreEqual(expectedTags[0], actualTags[0]); Assert.AreEqual(expectedTags[1], actualTags[1]); Assert.AreEqual(expectedTags[2], actualTags[2]); Assert.AreEqual(expectedTags.Count, actualTags.Count); }
public void UseNewTag_GetAddedNewTag() { //Arrange var tagRepository = new InMemoryTagRepository(); var tagFacade = new TagFacade(tagRepository); //Act tagFacade.UseTag("Tag"); //Assert Assert.AreEqual(1, tagFacade.FindTag("Tag").Count()); }
public void CanAddTag() { var repo = new InMemoryTagRepository(); Tag tag = new Tag(); tag.TagName = "Test Test"; repo.Add(tag); var list = repo.GetAll(); var newTag = repo.Get(5); Assert.AreEqual(list.Count, 5); Assert.AreEqual(newTag.TagName, "Test Test"); }
public void TryToFindNotExistingTags_GetEmptyList() { //Arrange var tagRepository = new InMemoryTagRepository(); tagRepository.Add("Tag1"); tagRepository.Add("Tag2"); tagRepository.Add("Teg3"); var tagFacade = new TagFacade(tagRepository); //Act var actualTags = tagFacade.FindTag("Teg1").ToList(); //Assert Assert.AreEqual(0, actualTags.Count); }
public void TryToFindExistingTags_GetListOfFoundTags() { //Arrange var tagRepository = new InMemoryTagRepository(); tagRepository.Add("Tag1"); tagRepository.Add("Tag2"); tagRepository.Add("Teg3"); var tagFacade = new TagFacade(tagRepository); //Act var expectedTags = new List <string> { "Tag1", "Tag2" }; var actualTags = tagFacade.FindTag("Tag").ToList(); //Assert Assert.AreEqual(expectedTags[0], actualTags[0]); Assert.AreEqual(expectedTags[1], actualTags[1]); Assert.AreEqual(expectedTags.Count, actualTags.Count); }
public void UseExistingTag_GetUpdatedPopularity() { //Arrange var tagRepository = new InMemoryTagRepository(); tagRepository.Add("Tag1"); tagRepository.Add("Tag2"); var tagFacade = new TagFacade(tagRepository); //Act tagFacade.UseTag("Tag2"); //Assert var expectedTags = new List <string> { "Tag2", "Tag1" }; var actualTags = tagFacade.FindTag("Tag").ToList(); Assert.AreEqual(expectedTags[0], actualTags[0]); Assert.AreEqual(expectedTags[1], actualTags[1]); Assert.AreEqual(expectedTags.Count, actualTags.Count); }
protected override void Seed(VideoGameBlog.Data.EntityFramework.InitDbContext context) { var userMgr = new UserManager <BlogUser>(new UserStore <BlogUser>(context)); var roleMgr = new RoleManager <BlogRole>(new RoleStore <BlogRole>(context)); if (!roleMgr.RoleExists("Admin")) { roleMgr.Create(new BlogRole() { Name = "Admin" }); } if (!roleMgr.RoleExists("Marketing")) { roleMgr.Create(new BlogRole() { Name = "Marketing" }); } if (!roleMgr.RoleExists("Disabled")) { roleMgr.Create(new BlogRole() { Name = "Disabled" }); } // create the default user var admin = new BlogUser() { UserName = "******", Email = "*****@*****.**", PhoneNumber = "1111111111" }; var marketing = new BlogUser() { UserName = "******", Email = "*****@*****.**", PhoneNumber = "2222222222" }; var disabled = new BlogUser() { UserName = "******", Email = "*****@*****.**", PhoneNumber = "3333333333" }; // create the user with the manager class if (userMgr.FindByName(admin.UserName) == null) { userMgr.Create(admin, "corndog123"); } if (userMgr.FindByName(marketing.UserName) == null) { userMgr.Create(marketing, "corndog123"); } if (userMgr.FindByName(disabled.UserName) == null) { userMgr.Create(disabled, "corndog123"); } // add the user to the admin role userMgr.AddToRole(admin.Id, "Admin"); userMgr.AddToRole(marketing.Id, "Marketing"); userMgr.AddToRole(disabled.Id, "Disabled"); InMemoryCategoryRepository catRepo = new InMemoryCategoryRepository(); foreach (var c in catRepo.GetAll()) { context.Categories.AddOrUpdate(c); context.SaveChanges(); } InMemoryTagRepository tagRepo = new InMemoryTagRepository(); foreach (var t in tagRepo.GetAll()) { context.Tags.AddOrUpdate(t); context.SaveChanges(); } InMemoryStaticPageRepository statRepo = new InMemoryStaticPageRepository(); foreach (var s in statRepo.GetAll()) { context.StaticPages.AddOrUpdate(s); context.SaveChanges(); } InMemoryPostRepository postRepo = new InMemoryPostRepository(); foreach (var p in postRepo.GetAll()) { context.Posts.AddOrUpdate(p); context.SaveChanges(); } }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { StartLoggly(); services.AddWebSocketManager(); IFileRepository fileRepository; IGroupRepository groupRepository; IKeysRepository keysRepository; ITagRepository tagRepository; IUserRepository userRepository; ISanctionRepository sanctionRepository; IEventRepository eventRepository; if (bool.Parse(Configuration.GetValue <string>("UseDB"))) { var dbContext = Configuration.GetValue <string>("MysqlConnectionString"); using (var context = new EduhubContext(dbContext)) { if (bool.Parse(Configuration.GetValue <string>("DeleteDB"))) { context.Database.EnsureDeleted(); } if (context.Database.EnsureCreated()) { var dbName = dbContext.Split("database=")[1].Split(";")[0]; context.Database.ExecuteSqlCommand( "ALTER DATABASE " + dbName + " CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"); var modelNames = context.Model.GetEntityTypes(); foreach (var modelname in modelNames) { var mapping = context.Model.FindEntityType(modelname.Name).Relational(); var tableName = mapping.TableName; context.Database.ExecuteSqlCommand( "alter table " + tableName.ToLower() + " convert to character set utf8mb4 collate utf8mb4_bin;"); } } context.Database.Migrate(); } fileRepository = new InMysqlFileRepository(dbContext); groupRepository = new InMysqlGroupRepository(dbContext); keysRepository = new InMysqlKeyRepository(dbContext); tagRepository = new InMysqlTagRepository(dbContext); userRepository = new InMysqlUserRepository(dbContext); sanctionRepository = new InMysqlSanctionRepository(dbContext); eventRepository = new InMemoryEventRepository(); } else { fileRepository = new InMemoryFileRepository(); groupRepository = new InMemoryGroupRepository(); keysRepository = new InMemoryKeysRepository(); tagRepository = new InMemoryTagRepository(); sanctionRepository = new InMemorySanctionRepository(); userRepository = new InMemoryUserRepository(); eventRepository = new InMemoryEventRepository(); } var emailSettings = new EmailSettings(Configuration.GetValue <string>("EmailLogin"), Configuration.GetValue <string>("Email"), Configuration.GetValue <string>("EmailPassword"), Configuration.GetValue <string>("SmtpAddress"), Configuration.GetValue <string>("ConfirmAddress"), int.Parse(Configuration.GetValue <string>("SmtpPort"))); var defaultAvatarFilename = Configuration.GetValue <string>("DefaultAvatarFilename"); var defaultAvatarContentType = Configuration.GetValue <string>("DefaultAvatarContentType"); var userSettings = new UserSettings(defaultAvatarFilename); if (!fileRepository.DoesFileExists(defaultAvatarFilename)) { fileRepository.AddFile(new UserFile(defaultAvatarFilename, defaultAvatarContentType)); } var tagFacade = new TagFacade(tagRepository); var emailSender = new EmailSender(emailSettings); var notificationsDistributor = new NotificationsDistributor(groupRepository, userRepository, emailSender); var groupSettings = new GroupSettings(Configuration.GetValue <int>("MinGroupSize"), Configuration.GetValue <int>("MaxGroupSize"), Configuration.GetValue <double>("MinGroupValue"), Configuration.GetValue <double>("MaxGroupValue")); var eventBusSettings = new EventBusSettings(Configuration.GetValue <string>("RabbitMqServerHostName"), Configuration.GetValue <string>("RabbitMqServerVirtualHost"), Configuration.GetValue <string>("RabbitMqAdminUserName"), Configuration.GetValue <string>("RabbitMqAdminPassword")); var eventBus = new EventBus(eventBusSettings); eventBus.StartListening(); var adminsEventConsumer = new AdminsEventConsumer(notificationsDistributor, eventRepository); var courseEventConsumer = new CourseEventConsumer(notificationsDistributor, eventRepository); var curriculumEventConsumer = new CurriculumEventConsumer(notificationsDistributor, eventRepository); var groupEventsConsumer = new GroupEventsConsumer(notificationsDistributor, eventRepository); var invitationConsumer = new InvitationConsumer(notificationsDistributor, eventRepository); var memberActionsConsumer = new MemberActionsConsumer(notificationsDistributor, eventRepository); eventBus.RegisterConsumer(new TagPopularityConsumer(tagFacade)); eventBus.RegisterConsumer <ReportMessageEvent>(adminsEventConsumer); eventBus.RegisterConsumer <SanctionsAppliedEvent>(adminsEventConsumer); eventBus.RegisterConsumer <SanctionCancelledEvent>(adminsEventConsumer); eventBus.RegisterConsumer <TeacherFoundEvent>(courseEventConsumer); eventBus.RegisterConsumer <CourseFinishedEvent>(courseEventConsumer); eventBus.RegisterConsumer <ReviewReceivedEvent>(courseEventConsumer); eventBus.RegisterConsumer <CurriculumAcceptedEvent>(curriculumEventConsumer); eventBus.RegisterConsumer <CurriculumDeclinedEvent>(curriculumEventConsumer); eventBus.RegisterConsumer <CurriculumSuggestedEvent>(curriculumEventConsumer); eventBus.RegisterConsumer <NewCreatorEvent>(groupEventsConsumer); eventBus.RegisterConsumer <GroupIsFormedEvent>(groupEventsConsumer); eventBus.RegisterConsumer <InvitationAcceptedEvent>(invitationConsumer); eventBus.RegisterConsumer <InvitationDeclinedEvent>(invitationConsumer); eventBus.RegisterConsumer <InvitationReceivedEvent>(invitationConsumer); eventBus.RegisterConsumer <NewMemberEvent>(memberActionsConsumer); eventBus.RegisterConsumer <MemberLeftEvent>(memberActionsConsumer); var publisher = eventBus.GetEventPublisher(); var userFacade = new UserFacade(userRepository, groupRepository, eventRepository, publisher); var groupEditFacade = new GroupEditFacade(groupRepository, groupSettings, publisher); var userEditFacade = new UserEditFacade(userRepository, fileRepository, sanctionRepository); var groupFacade = new GroupFacade(groupRepository, userRepository, sanctionRepository, groupSettings, publisher); var fileFacade = new FileFacade(fileRepository); var chatFacade = new ChatFacade(groupRepository, userRepository); var sanctionsFacade = new SanctionFacade(sanctionRepository, userRepository, publisher); var userAccountFacade = new AccountFacade(keysRepository, userRepository, emailSender, userSettings); var reportFacade = new ReportFacade(userRepository, eventRepository, publisher); services.AddSingleton <IUserFacade>(userFacade); services.AddSingleton <IGroupFacade>(groupFacade); services.AddSingleton <IFileFacade>(fileFacade); services.AddSingleton <IChatFacade>(chatFacade); services.AddSingleton <IGroupEditFacade>(groupEditFacade); services.AddSingleton <IUserEditFacade>(userEditFacade); services.AddSingleton <ITagFacade>(tagFacade); services.AddSingleton <ISanctionFacade>(sanctionsFacade); services.AddSingleton <IAccountFacade>(userAccountFacade); services.AddSingleton <IReportFacade>(reportFacade); services.AddSingleton(Env); userAccountFacade.CheckAdminExistence(Configuration.GetValue <string>("AdminEmail")); services.AddSwaggerGen(current => { current.SwaggerDoc("v1", new Info { Title = "EduHub API", Version = "v1" }); current.AddSecurityDefinition("Bearer", new ApiKeyScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = "header", Type = "apiKey" }); current.OperationFilter <ExamplesOperationFilter>(); current.DescribeAllEnumsAsStrings(); var a = string.Format(@"{0}\EduHub.xml", AppDomain.CurrentDomain.BaseDirectory); current.IncludeXmlComments(string.Format(@"{0}/EduHub.xml", AppDomain.CurrentDomain.BaseDirectory)); }); ConfigureSecurity(services); if (Configuration.GetValue <bool>("Authorization")) { services.AddMvc(o => { o.Filters.Add(new ExceptionFilter()); o.Filters.Add(new ActionFilter()); }); } else { services.AddMvc(o => { o.Filters.Add(new AllowAnonymousFilter()); o.Filters.Add(new ExceptionFilter()); o.Filters.Add(new ActionFilter()); }); } services.AddCors(options => { options.AddPolicy("AllowAnyOrigin", builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); }); }