public void TestReportSpammerSameUser() { // No reports. var spammer = new Spammer { UserId = Guid.NewGuid() }; Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report once. var reportedById = Guid.NewGuid(); _spamCommand.ReportSpammer(reportedById, spammer); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report twice. _spamCommand.ReportSpammer(reportedById, spammer); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report thrice. _spamCommand.ReportSpammer(reportedById, spammer); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Different users. _spamCommand.ReportSpammer(Guid.NewGuid(), spammer); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); _spamCommand.ReportSpammer(Guid.NewGuid(), spammer); Assert.IsTrue(_spamQuery.IsSpammer(spammer)); }
bool ISpamRepository.IsSpammer(Spammer possibleSpammer) { using (var dc = CreateContext().AsReadOnly()) { return(SpammerExists(dc, possibleSpammer.UserId, possibleSpammer.FirstName, possibleSpammer.LastName)); } }
public void TestReportSpammer() { // No reports. var spammer = new Spammer { UserId = Guid.NewGuid() }; Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report once. _spamCommand.ReportSpammer(Guid.NewGuid(), spammer); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report twice. _spamCommand.ReportSpammer(Guid.NewGuid(), spammer); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report thrice. _spamCommand.ReportSpammer(Guid.NewGuid(), spammer); Assert.IsTrue(_spamQuery.IsSpammer(spammer)); }
public static SpammerEntity Map(this Spammer spammer) { return(new SpammerEntity { id = Guid.NewGuid(), userId = spammer.UserId, firstName = spammer.FirstName, lastName = spammer.LastName, }); }
public async Task NoResponseWhenLargerTriggerCount() { var spammer = new Spammer(2, 1); var channel = new Mock <IMessageChannel>(); var msg = CreateMessage(channel.Object, "123"); await spammer.CheckSpamAsync(msg.Object); channel.Verify(c => c.SendMessageAsync("123", false, null, null), Times.Never()); }
public async Task RespondAlwaysToFullProbability() { var spammer = new Spammer(1, 1); var channel = new Mock <IMessageChannel>(); var msg = CreateMessage(channel.Object, "123"); await spammer.CheckSpamAsync(msg.Object); channel.Verify(c => c.SendMessageAsync("123", false, null, null), Times.Once()); }
private bool IsReportedSpammer(Spammer spammer) { // To be classifed as a spammer it requires 3 reports from different users // within the last month, and they must be specified by id. if (spammer.UserId == null) { return(false); } var sinceTime = DateTime.Now.Date.AddDays(-1 * ReportIntervalDays); var reports = _repository.GetSpammerReports(spammer.UserId.Value, sinceTime); return((from r in reports select r.ReportedByUserId).Distinct().Count() >= ReportDistinctUsers); }
public async Task InstallAsync(DiscordSocketClient discordClient, CommandService commandService) { _client = discordClient; _commandService = commandService; var server = new Server(_client); server.Start(); var drinkDao = await DrinkDao.CreateAsync(); _services = new ServiceCollection(); var messageService = new MessageService(_client); var eventService = new EventService(messageService, new EventDao()); // Add services to the ServiceCollection _services.AddSingleton(await CommentService.Create()); _services.AddSingleton(new CommandDao()); _services.AddSingleton(new QuoteService()); _services.AddSingleton(new WeatherService()); _services.AddSingleton(new UrbanService()); _services.AddSingleton(new NHLService()); _services.AddSingleton(new AromaService(new AromaDao())); _services.AddSingleton(new EPClient(BotSettings.Instance.EPAPIKey)); _services.AddSingleton(messageService); _services.AddSingleton(eventService); _services.AddSingleton(new WolframService()); _services.AddSingleton(new StartupTime()); _services.AddSingleton(new F1Service()); if (drinkDao != null) { _services.AddSingleton(drinkDao); } _oldLinkService = new OldLinkService(); _forbiddenMsgService = new ForbiddenMsgService(); _spammer = new Spammer(); JobManager.Initialize(eventService); // Build ServiceProvider and add modules _serviceProvider = _services.BuildServiceProvider(); await _commandService.AddModulesAsync(Assembly.GetEntryAssembly(), _serviceProvider); _client.MessageReceived += HandleCommandAsync; Log.Debug("CommandHandler installed."); }
void ISpamRepository.CreateSpammer(Spammer spammer) { using (var dc = CreateContext()) { // Check whether the spammer already exists. var exists = spammer.UserId != null ? SpammerByUserIdExists(dc, spammer.UserId.Value) : SpammerByNameExists(dc, spammer.FirstName, spammer.LastName); if (!exists) { dc.SpammerEntities.InsertOnSubmit(spammer.Map()); dc.SubmitChanges(); } } }
public SpamApplication(SocialNetworkBrand type) { switch (type) { case SocialNetworkBrand.Facebook: _network = new Facebook(); break; case SocialNetworkBrand.LinkedIn: break; case SocialNetworkBrand.Twitter: break; default: break; } _spammer = new Spammer(); }
void ISpamCommand.ReportSpammer(Guid reportedById, Spammer spammer) { // Create a report entry. spammer.Prepare(); spammer.Validate(); var report = new SpammerReport { ReportedByUserId = reportedById, ReportedTime = DateTime.Now, Spammer = spammer }; _repository.ReportSpammer(report); // Check whether this user is classified as a spammer. if (IsReportedSpammer(spammer)) { _repository.CreateSpammer(spammer); } }
public void TestReportSpammerDates() { // No reports. var spammer = new Spammer { UserId = Guid.NewGuid() }; Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report once. var now = DateTime.Now; _spamRepository.ReportSpammer(new SpammerReport { ReportedByUserId = Guid.NewGuid(), ReportedTime = now.AddDays(-1 * 40), Spammer = spammer }); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report twice. _spamRepository.ReportSpammer(new SpammerReport { ReportedByUserId = Guid.NewGuid(), ReportedTime = now.AddDays(-1 * 20), Spammer = spammer }); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report thrice. _spamRepository.ReportSpammer(new SpammerReport { ReportedByUserId = Guid.NewGuid(), ReportedTime = now.AddDays(-1 * 10), Spammer = spammer }); Assert.IsFalse(_spamQuery.IsSpammer(spammer)); // Report again within the timeframe. _spamCommand.ReportSpammer(Guid.NewGuid(), spammer); Assert.IsTrue(_spamQuery.IsSpammer(spammer)); }
void ISpamCommand.CreateSpammer(Spammer spammer) { spammer.Prepare(); spammer.Validate(); _repository.CreateSpammer(spammer); }
bool ISpamQuery.IsSpammer(Spammer possibleSpammer) { return(_repository.IsSpammer(possibleSpammer)); }