Пример #1
0
        public async Task QuoteAsync([Remainder] string quote = null)
        {
            await Context.Message.DeleteAsync();

            if (quote != null)
            {
                if (!ProfanityFilter.HasProfanity(quote))
                {
                    var dbCon = DBConnection.Instance();
                    dbCon.DatabaseName = BotConfig.Load().DatabaseName;
                    if (dbCon.IsConnect())
                    {
                        var message = await Context.Channel.SendMessageAsync("Your quote has been updated successfully.");

                        await Delete.DeleteMessage(message);

                        await UserProfile.UpdateUserQuoteAsync(Context.User.Id, quote, dbCon);

                        dbCon.Close();
                    }
                }
            }
            else
            {
                var message = await Context.Channel.SendMessageAsync("Correct format of this command is `!quote <quote_message>`, for example using mention `!quote 'Most people go through life trying not to die, I go through life trying to live.'`.");

                await Delete.DeleteMessage(message);
            }
        }
Пример #2
0
        public async Task FactAsync([Remainder] string fact = null)
        {
            await Context.Message.DeleteAsync();

            if (fact != null)
            {
                if (!ProfanityFilter.HasProfanity(fact))
                {
                    var dbCon = DBConnection.Instance();
                    dbCon.DatabaseName = BotConfig.Load().DatabaseName;
                    if (dbCon.IsConnect())
                    {
                        var message = await Context.Channel.SendMessageAsync("Your fact has been updated successfully.");

                        await Delete.DeleteMessage(message);

                        await UserProfile.UpdateUserFactAsync(Context.User.Id, fact, dbCon);

                        dbCon.Close();
                    }
                }
            }
            else
            {
                var message = await Context.Channel.SendMessageAsync("Correct format of this command is `!fact <fact_message>`, for example using mention `!quote Birds have wings.`.");

                await Delete.DeleteMessage(message);
            }
        }
Пример #3
0
        public async Task BioAsync([Remainder] string bio = null)
        {
            await Context.Message.DeleteAsync();

            if (bio != null)
            {
                if (!ProfanityFilter.HasProfanity(bio))
                {
                    var dbCon = DBConnection.Instance();
                    dbCon.DatabaseName = BotConfig.Load().DatabaseName;
                    if (dbCon.IsConnect())
                    {
                        var message = await Context.Channel.SendMessageAsync("Your bio has been updated successfully.");

                        await Delete.DeleteMessage(message);

                        await UserProfile.UpdateUserBioAsync(Context.User.Id, bio, dbCon);

                        dbCon.Close();
                    }
                }
            }
            else
            {
                var message = await Context.Channel.SendMessageAsync("Correct format of this command is `!bio <bio_message>`, for example using mention `!bio A software engineer from London.`.");

                await Delete.DeleteMessage(message);
            }
        }
Пример #4
0
        protected void HandleChannelMessage(RelayUser user, string channel, string message)
        {
            string[] parts  = message.SplitSpaces(3);
            string   rawCmd = parts[0].ToLower();
            bool     opchat = OpChannels.CaselessContains(channel);

            if (HandleWhoCommand(user, channel, rawCmd, opchat))
            {
                return;
            }
            if (rawCmd.CaselessEq(Server.Config.IRCCommandPrefix))
            {
                if (!HandleChannelCommand(user, channel, message, parts))
                {
                    return;
                }
            }

            if (opchat)
            {
                Logger.Log(LogType.RelayChat, "(OPs): ({0}) {1}: {2}", RelayName, user.Nick, message);
                Chat.MessageOps(string.Format("To Ops &f-&I({0}) {1}&f- {2}", RelayName, user.Nick,
                                              Server.Config.ProfanityFiltering ? ProfanityFilter.Parse(message) : message));
            }
            else
            {
                Logger.Log(LogType.RelayChat, "({0}) {1}: {2}", RelayName, user.Nick, message);
                MessageInGame(user.Nick, string.Format("&I({0}) {1}: &f{2}", RelayName, user.Nick,
                                                       Server.Config.ProfanityFiltering ? ProfanityFilter.Parse(message) : message));
            }
        }
Пример #5
0
        public string GetResponse()
        {
            string receivedstring = "";
            string receivedchar   = "";
            int    recv           = 0;

            byte[]        receivedata = new byte[1];
            ASCIIEncoding ascii       = new ASCIIEncoding();

            do
            {
                // if this socket isnt Connected anymore, then just return -1
                if (socket.Handle.ToString() == "-1")
                {
                    return(null);
                }
                try
                {
                    // reset the one byte buffer for the next character
                    receivedata[0] = 0;
                    // get next character, a zero means there was a disconnect from the client
                    recv = socket.Receive(receivedata);
                }
                catch
                {
                    return(null);
                }
                receivedchar = ascii.GetString(receivedata, 0, receivedata.Length);
                // Handle backspace or empty characters
                if ((receivedchar == "\x08" && receivedstring.Length > 0))
                {
                    receivedstring = receivedstring.Substring(0, receivedstring.Length - 1);
                }
                // Keep building the command string if we havent hit a CR or LF yet
                if ((receivedchar != "\r" && receivedchar != "\n" && receivedchar != "\x08"))
                {
                    receivedstring = receivedstring + receivedchar;
                }
                // Client disconnect is signalled by a zero
                if (receivedchar.Substring(0, 1).ToCharArray()[0] == 0)
                {
                    Lib.Disco(this, "client disconnected");
                    //break;
                    return(null);
                }
                // Bail and return the command if we hit a newline character
            } while (receivedchar != "\n");

            // Remove all leading and trailing spaces from the string
            receivedstring = receivedstring.Trim();

            // reset ansi colors when carriage return is detected coming from the user
            Send(Lib.Ansireset);

            // Filter the player text
            ProfanityFilter.FilterMessage(ref receivedstring,
                                          this);

            return(receivedstring);
        }
        public void IsProfanity_TermContainsProhibitedTerm_ReturnsTrue()
        {
            var filter = new ProfanityFilter();

            filter.Terms.Prohibited.Add("blue");
            Assert.True(filter.IsProfanity("blue"));
        }
        public void StringContainsProfanityReturnsSwearWordForSentenceContainingANaughtyWordForPartialWordMatch()
        {
            var filter    = new ProfanityFilter();
            var swearWord = filter.StringContainsFirstProfanity("Mary had a little shitty lamb");

            Assert.AreEqual("shitty", swearWord);
        }
Пример #8
0
        public void ProfanityCheck_GetProfanity_Extensive()
        {
            var repo = new Repository <BadWord>(resolver.Resolve <IDataContext>());

            var result = ProfanityFilter.GetProfanity(null, null);

            Assert.Null(result);
            var badWord     = "panty";
            var checkPhrase = "She was whereing Panty.";

            result = ProfanityFilter.GetProfanity(checkPhrase, repo.List());
            Assert.Equal(result, badWord);

            checkPhrase = "panty well";
            result      = ProfanityFilter.GetProfanity(checkPhrase, repo.List());
            Assert.Equal(result, badWord);

            checkPhrase = " panty well";
            result      = ProfanityFilter.GetProfanity(checkPhrase, repo.List());
            Assert.Equal(result, badWord);

            checkPhrase = "panty";
            result      = ProfanityFilter.GetProfanity(checkPhrase, repo.List());
            Assert.Equal(result, badWord);

            checkPhrase = "panty.";
            result      = ProfanityFilter.GetProfanity(checkPhrase, repo.List());
            Assert.Equal(result, badWord);

            checkPhrase = "$panty$";
            result      = ProfanityFilter.GetProfanity(checkPhrase, repo.List());
            Assert.True(result.Contains(badWord));
        }
        public void ContainsProfanityReturnsFalseWhenProfanityIsAaa()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("aaa");

            Assert.IsFalse(result);
        }
        public void GetCompleteWordReturnsNullIfWordNotFound()
        {
            var filter = new ProfanityFilter();
            var result = filter.GetCompleteWord("I am a banana and I like to jump.", "c**t");

            Assert.IsNull(result);
        }
        private bool ContainsProfanity(ProfanityFilter profanityFilter, string message)
        {
            // Normalize message to lowercase and split into array of words.
            var messageWords = message.ToLower().Split(" ");

            var bannedWords = profanityFilter.BannedWords.Select(w => w.Word).ToList();

            // Check for default banned words if UserDefaultList enabled.
            if (profanityFilter.UseDefaultList)
            {
                bannedWords.AddRange(_defaultBannedWords);
            }

            foreach (var word in messageWords)
            {
                foreach (var bannedWord in bannedWords)
                {
                    if (word == bannedWord)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
        public void ContainsProfanityReturnsTrueWhenProfanityExists()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Scunthorpe");

            Assert.IsTrue(result);
        }
        public void StringContainsProfanityReturnsFirstSwearWordForSentenceContainingMultipleWearWordsForMixedCase()
        {
            var filter    = new ProfanityFilter();
            var swearWord = filter.StringContainsFirstProfanity("Mary had a little ShIt lamb who was a little F****r.");

            Assert.AreEqual("shit", swearWord);
        }
Пример #14
0
        public void ContainsProfanity_InputContainsNoProhibitedTerms_ReturnsFalse()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Ireland");

            Assert.False(result);
        }
        public void ContainsProfanityReturnsFalseIfNullOrEmptyInputString(string input)
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity(input);

            Assert.IsFalse(result);
        }
Пример #16
0
        public void StartUp()
        {
            Console.WriteLine("StartUp()");
            if (!_setupRun)
            {
                Console.WriteLine("Setting up");


                string rootPath = TestConfig.GetConfig().GetRipleyServerPath();
                BBC.Dna.AppContext.OnDnaStartup(rootPath);

                //Create the mocked inputcontext
                Mockery mock = new Mockery();
                _context = DnaMockery.CreateDatabaseInputContext();

                // Create a mocked site for the context
                ISite mockedSite = DnaMockery.CreateMockedSite(_context, 1, "h2g2", "h2g2", true, "comment");
                Stub.On(_context).GetProperty("CurrentSite").Will(Return.Value(mockedSite));
                Stub.On(mockedSite).GetProperty("ModClassID").Will(Return.Value(1));

                Stub.On(_context).Method("FileCacheGetItem").Will(Return.Value(false));
                Stub.On(_context).Method("FileCachePutItem").Will(Return.Value(false));

                // Initialise the profanities object
                var p = new ProfanityFilter(DnaMockery.CreateDatabaseReaderCreator(), DnaDiagnostics.Default, CacheFactory.GetCacheManager(), null, null);
                BBC.Dna.User user = new BBC.Dna.User(_context);
                Stub.On(_context).GetProperty("ViewingUser").Will(Return.Value(user));
                
                _setupRun = true;
            }
            Console.WriteLine("Finished StartUp()");
        }
        public void GetCompleteWordReturnsNullIfNullInputString()
        {
            var filter = new ProfanityFilter();
            var result = filter.GetCompleteWord(null, "c**t");

            Assert.IsNull(result);
        }
        public void DetectAllProfanitiesReturnsNulListForEmptyInput()
        {
            var filter    = new ProfanityFilter();
            var swearList = filter.DetectAllProfanities(null);

            Assert.AreEqual(0, swearList.Count);
        }
Пример #19
0
        /// <summary>
        /// Returns validated query string for GET method or null.
        /// </summary>
        /// <returns></returns>
        private string ValidateInputForGet(string parameterName)
        {
            // do not return anything on empty input
            if (!Request.Query.ContainsKey(parameterName))
            {
                return(null);
            }
            var userInput = Request.Query[parameterName][0];

            // Check null or spaces or empty
            if (string.IsNullOrEmpty(userInput) || string.IsNullOrWhiteSpace(userInput))
            {
                return(null);
            }
            userInput = userInput.Trim();
            // Check minimal length
            if (userInput.Length < MINIMAL_WORD_LENGTH + 1)
            {
                return(null);
            }
            // let's only serve alphanumeric for now.
            if (ProfanityFilter.AllCharactersAllowed(userInput))
            {
                return(userInput);
            }
            return(null);
        }
Пример #20
0
        public void GetProfanities_InputIsNull_ReturnsEmptyCollection()
        {
            var filter    = new ProfanityFilter();
            var swearList = filter.GetProfanities(null);

            Assert.Equal(0, swearList.Count);
        }
Пример #21
0
        public void IsProfanity_TermIsPermittedAndMixedCase_ReturnsFalse()
        {
            var filter = new ProfanityFilter();

            filter.Terms.Permitted.Add("shitty");
            Assert.False(filter.IsProfanity("ShiTty"));
        }
Пример #22
0
        public void IsProfanity_TermIsProhibitedAndPermitted_ReturnsFalse()
        {
            var filter = new ProfanityFilter();

            filter.Terms.Permitted.Add("shitty");
            Assert.False(filter.IsProfanity("shitty"));
        }
        public void ContainsProfanityReturnsFalseWhenProfanityDoesNotExist()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Ireland");

            Assert.IsFalse(result);
        }
        public void ContainsProfanityReturnsTrueWhenProfanityIsADollarDollar()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("a$$");

            Assert.IsTrue(result);
        }
        public void ContainsProfanityReturnsTrueWhenMultipleProfanitiesExist()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Scuntarsefuckhorpe");

            Assert.IsTrue(result);
        }
        public void StringContainsProfanityReturnsEmptyStringForNullInput()
        {
            var filter    = new ProfanityFilter();
            var swearWord = filter.StringContainsFirstProfanity(null);

            Assert.AreEqual(string.Empty, swearWord);
        }
        public void DetectAllProfanitiesForEmptyString()
        {
            var filter = new ProfanityFilter();

            var swearList = filter.DetectAllProfanities("", true);

            Assert.AreEqual(0, swearList.Count);
        }
Пример #28
0
        public void Censor_InputIsEmptyAndAlternateReplacementCharProvided_ReturnsCensoredString()
        {
            var          filter   = new ProfanityFilter();
            var          result   = filter.Censor("", '@');
            const string expected = "";

            Assert.Equal(expected, result);
        }
        public void DetectAllProfanitiesMultipleScunthorpes()
        {
            var filter = new ProfanityFilter();

            var swearList = filter.DetectAllProfanities("Scunthorpe Scunthorpe", true);

            Assert.AreEqual(0, swearList.Count);
        }
        public void DetectAllProfanitiesScunthorpePenistone()
        {
            var filter = new ProfanityFilter();

            var swearList = filter.DetectAllProfanities("ScUnThOrPePeNiStOnE", true);

            Assert.AreEqual(0, swearList.Count);
        }
        public void DetectAllProfanitiesReturns1SwearPhrase()
        {
            var filter    = new ProfanityFilter();
            var swearList = filter.DetectAllProfanities("2 girls 1 cup is my favourite video");

            Assert.AreEqual(1, swearList.Count);
            Assert.AreEqual("2 girls 1 cup", swearList[0]);
        }
Пример #32
0
        public void StartUp()
        {
            Statistics.InitialiseIfEmpty(null,false);
            SnapshotInitialisation.RestoreFromSnapshot();


            ICacheManager groupsCache = new StaticCacheManager();
            var g = new UserGroups(DnaMockery.CreateDatabaseReaderCreator(), null, groupsCache, null, null);
            var p = new ProfanityFilter(DnaMockery.CreateDatabaseReaderCreator(), null, groupsCache, null, null);
            var b = new BannedEmails(DnaMockery.CreateDatabaseReaderCreator(), null, groupsCache, null, null);
        }
Пример #33
0
        protected void Application_Start(object sender, EventArgs e)
        {
            //System.Diagnostics.Debugger.Launch();
            if (ConfigurationManager.AppSettings["MaintenanceMode"] == "1")
            {//do nothing if in maintenance
                return;
            }

            Statistics.InitialiseIfEmpty(null, false);
            dnaDiagnostics = new DnaDiagnostics(RequestIdGenerator.GetNextRequestId(), DateTime.Now);
            connectionString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
            readerCreator = new DnaDataReaderCreator(connectionString, dnaDiagnostics);

            try
            {
                emailServerAddress = ConfigurationManager.AppSettings["EmailServer"];
            }
            catch
            {
                dnaDiagnostics.WriteWarningToLog("BBC.Dna.Services.Application_Start", "Unable to find config email server address - no emails will be sent!");
            }

            try
            {
                fileCacheFolder = ConfigurationManager.AppSettings["FileCacheFolder"];
            }
            catch
            {
                fileCacheFolder = Environment.GetEnvironmentVariable("Temp");
                dnaDiagnostics.WriteWarningToLog("BBC.Dna.Services.Application_Start", "Unable to find config file cache folder - Defaulting to the system temp folder!");
            }

            ICacheManager cacheManager = null;
            try
            {
                cacheManager = CacheFactory.GetCacheManager("Memcached");
            }
            catch (Exception error)
            {
                dnaDiagnostics.WriteWarningToLog("BBC.Dna.Services.Application_Start", "Unable to use memcached cachemanager - falling back to static inmemory");
                dnaDiagnostics.WriteExceptionToLog(error);
                cacheManager = new StaticCacheManager();
            }


            siteList = new SiteList(readerCreator, dnaDiagnostics, cacheManager, null, null);//no sending signals from here
            var bannedEmails = new BannedEmails(readerCreator, dnaDiagnostics, cacheManager, null, null);//no sending signals from here
            var userGroups = new UserGroups(readerCreator, dnaDiagnostics, cacheManager, null, null);//no sending signals from here
            var profanityFilter = new ProfanityFilter(readerCreator, dnaDiagnostics, cacheManager, null, null);//no sending signals from here
            var moderationClasses = new ModerationClassListCache(readerCreator, dnaDiagnostics, cacheManager, null, null);//no sending signals from here
            BBC.Dna.Objects.SmileyTranslator.LoadSmileys(readerCreator);
        }
Пример #34
0
 public void StartUp()
 {
     SnapshotInitialisation.RestoreFromSnapshot();
     Statistics.InitialiseIfEmpty(null, false);
     using (FullInputContext inputcontext = new FullInputContext(""))
     {
         var p = new ProfanityFilter(DnaMockery.CreateDatabaseReaderCreator(), null, CacheFactory.GetCacheManager(), null, null);
         var b = new BannedEmails(DnaMockery.CreateDatabaseReaderCreator(), null, CacheFactory.GetCacheManager(), null, null);
         var g = new UserGroups(DnaMockery.CreateDatabaseReaderCreator(), null, CacheFactory.GetCacheManager(), null, null);
         _siteList = SiteList.GetSiteList();
         site = _siteList.GetSite("h2g2");
         site.IsEmergencyClosed = false;
         _ratings = new Reviews(inputcontext.dnaDiagnostics, inputcontext.ReaderCreator, CacheFactory.GetCacheManager(), _siteList);
     }
 }
Пример #35
0
        public void AddRecentSearchTests()
        {
            string rootPath = TestConfig.GetConfig().GetRipleyServerPath();
            BBC.Dna.AppContext.OnDnaStartup(rootPath);



            Console.WriteLine("Before RecentSearch - AddRecentSearchTests");

            //Create the mocked inputcontext
            Mockery mock = new Mockery();
            IInputContext context = DnaMockery.CreateDatabaseInputContext();

            Stub.On(context).Method("GetParamIntOrZero").WithAnyArguments().Will(Return.Value(0));

            // Create a mocked site for the context
            ISite mockedSite = DnaMockery.CreateMockedSite(context, 70, "mbiplayer", "mbiplayer", true, "comment");//changed to miss cache
            Stub.On(context).GetProperty("CurrentSite").Will(Return.Value(mockedSite));
            Stub.On(context).Method("DoesParamExist").With("forumid", "forumid").Will(Return.Value(false));
            Stub.On(mockedSite).GetProperty("ModClassID").Will(Return.Value(1));


            BBC.Dna.User user = new BBC.Dna.User(context);
            Stub.On(context).GetProperty("ViewingUser").Will(Return.Value(user));
            Stub.On(context).GetProperty("CurrentSite").Will(Return.Value(mockedSite));


            // Initialise the profanities object
            var p = new ProfanityFilter(DnaMockery.CreateDatabaseReaderCreator(), DnaDiagnostics.Default, CacheFactory.GetCacheManager(), null, null);

            RecentSearch recentsearch = new RecentSearch(context);
            Assert.IsTrue(recentsearch.AddSearchTerm("test article", RecentSearch.SEARCHTYPE.ARTICLE),"Adding valid artical search");
            Assert.IsTrue(recentsearch.AddSearchTerm("test forum", RecentSearch.SEARCHTYPE.FORUM), "Adding valid forum search");
            Assert.IsFalse(recentsearch.AddSearchTerm("This contains the profanity f**k", RecentSearch.SEARCHTYPE.ARTICLE), "Failing to add search term with profanity");
            Assert.IsFalse(recentsearch.AddSearchTerm("This contains the an email - [email protected]", RecentSearch.SEARCHTYPE.ARTICLE), "Failing to add search term with email");


            recentsearch.ProcessRequest();
            XmlElement xml = recentsearch.RootElement;
            Assert.IsTrue(xml.SelectSingleNode("RECENTSEARCHES") != null, "The xml is not generated correctly!!!");
          
            DnaXmlValidator validator = new DnaXmlValidator(xml.InnerXml, _schemaUri);
            validator.Validate();

            Console.WriteLine("after RecentSearch - AddRecentSearchTests");
        }
Пример #36
0
        public void StartUp()
        {
            SnapshotInitialisation.ForceRestore();
            Statistics.InitialiseIfEmpty();

            using (FullInputContext inputcontext = new FullInputContext(""))
            {
                _siteList = SiteList.GetSiteList();
                site = _siteList.GetSite("h2g2");

                _comments = new Comments(inputcontext.dnaDiagnostics, inputcontext.ReaderCreator, CacheFactory.GetCacheManager(), _siteList);
                
                ICacheManager groupsCache = new StaticCacheManager();
                var g = new UserGroups(DnaMockery.CreateDatabaseReaderCreator(), null, groupsCache, null, null);
                var p = new ProfanityFilter(DnaMockery.CreateDatabaseReaderCreator(), null, groupsCache, null, null);
                var b = new BannedEmails(DnaMockery.CreateDatabaseReaderCreator(), null, groupsCache, null, null);
            }
        }
        public void StartUp()
        {
            SnapshotInitialisation.RestoreFromSnapshot();
            Statistics.InitialiseIfEmpty(null,false);
            Statistics.ResetCounters();

            using (FullInputContext inputcontext = new FullInputContext(""))
            {
                using (IDnaDataReader reader = inputcontext.CreateDnaDataReader(""))
                {//force processpremod out...
                    reader.ExecuteDEBUGONLY("delete from siteoptions where SiteID=1 and Name='ProcessPreMod'");
                }
                _siteList = SiteList.GetSiteList();
                site = _siteList.GetSite("h2g2");

                _comments = new Comments(inputcontext.dnaDiagnostics, inputcontext.ReaderCreator, CacheFactory.GetCacheManager(), _siteList);
                var bannedEmails = new BannedEmails(inputcontext.ReaderCreator, inputcontext.dnaDiagnostics, CacheFactory.GetCacheManager(), null, null);//no sending signals from here
                var userGroups = new UserGroups(inputcontext.ReaderCreator, inputcontext.dnaDiagnostics, CacheFactory.GetCacheManager(), null, null);//no sending signals from here
                var profanityFilter = new ProfanityFilter(inputcontext.ReaderCreator, inputcontext.dnaDiagnostics, CacheFactory.GetCacheManager(), null, null);//no sending signals from here            
            }
        }
Пример #38
0
        public void InitialiseProfanities_EmptyDB_ReturnsEmptyObject()
        {


            var cache = _mocks.DynamicMock<ICacheManager>();
            cache.Stub(x => x.Contains("")).Constraints(Is.Anything()).Return(false);

            var reader = _mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(false);
        

            var creator = _mocks.DynamicMock<IDnaDataReaderCreator>();
            creator.Stub(x => x.CreateDnaDataReader("getallprofanities")).Return(reader);

            var diag = _mocks.DynamicMock<IDnaDiagnostics>();
            _mocks.ReplayAll();

            var profanityObj = new ProfanityFilter(creator, diag, cache, null, null);

            Assert.AreEqual(0, ProfanityFilter.GetObject().GetObjectFromCache().ProfanityClasses.ModClassProfanities.Keys.Count);
            creator.AssertWasCalled(x => x.CreateDnaDataReader("getallprofanities"));
        }
Пример #39
0
        public void InitialiseProfanities_ValidDB_ReturnsFilledObject()
        {
            var modclassId = new Queue<int>();
            modclassId.Enqueue(1);
            modclassId.Enqueue(2);
            modclassId.Enqueue(2);
            var profanity = new Queue<string>();
            profanity.Enqueue("hello");
            profanity.Enqueue("hello1");
            profanity.Enqueue("hello");
            var refer = new Queue<byte>();
            refer.Enqueue(1);
            refer.Enqueue(0);
            refer.Enqueue(1);

            var cache = _mocks.DynamicMock<ICacheManager>();
            cache.Stub(x => x.Contains("")).Constraints(Is.Anything()).Return(false);

            var reader = _mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(true).Repeat.Times(3);
            reader.Stub(x => x.GetInt32("ModClassID")).Return(0).WhenCalled(x => x.ReturnValue = modclassId.Dequeue());
            reader.Stub(x => x.GetStringNullAsEmpty("Profanity")).Return("").WhenCalled(x => x.ReturnValue = profanity.Dequeue());
            reader.Stub(x => x.GetByte("Refer")).Return(1).WhenCalled(x => x.ReturnValue = refer.Dequeue());


            var creator = _mocks.DynamicMock<IDnaDataReaderCreator>();
            creator.Stub(x => x.CreateDnaDataReader("getallprofanities")).Return(reader);

            var diag = _mocks.DynamicMock<IDnaDiagnostics>();
            _mocks.ReplayAll();

            var profanityObj = new ProfanityFilter(creator, diag, cache, null, null);

            Assert.AreEqual(2, profanityObj.GetObjectFromCache().ProfanityClasses.ModClassProfanities.Keys.Count);
            creator.AssertWasCalled(x => x.CreateDnaDataReader("getallprofanities"));
        }
Пример #40
0
        public void GetTermsStats_GetsValidStats_ReturnsValidObject()
        {
            var cacheObj = GetProfanityCacheObject();

            var cache = _mocks.DynamicMock<ICacheManager>();
            cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey("LASTUPDATE"))).Return(false);
            cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey())).Return(true);
            cache.Stub(x => x.GetData(ProfanityFilter.GetCacheKey())).Return(cacheObj);

            var reader = _mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(false);


            var creator = _mocks.DynamicMock<IDnaDataReaderCreator>();
            creator.Stub(x => x.CreateDnaDataReader("getallprofanities")).Return(reader);

            var diag = _mocks.DynamicMock<IDnaDiagnostics>();
            _mocks.ReplayAll();

            var profanityObj = new ProfanityFilter(creator, diag, cache, null, null);

            var stats = profanityObj.GetStats(typeof(ProfanityFilter));
            Assert.IsNotNull(stats);
            Assert.AreEqual(typeof(ProfanityFilter).AssemblyQualifiedName, stats.Name);
            foreach (var modclass in profanityObj.GetObjectFromCache().ProfanityClasses.ModClassProfanities)
            {
                Assert.AreEqual(modclass.Value.ProfanityList.Count.ToString(), stats.Values["ModClassID_" + modclass.Key.ToString() + "_ProfanityList"]);
                Assert.AreEqual(modclass.Value.ReferList.Count.ToString(), stats.Values["ModClassID_" + modclass.Key.ToString() + "_ReferList"]);
            }

            
            

        }
Пример #41
0
        public void Test08GetUITemplateForValidationParamsWithProfanity()
        {
            Console.WriteLine("Before Test08GetUITemplateForValidationParamsWithProfanity");

            //Create the mocked inputcontext
            Mockery mock = new Mockery();
            IInputContext mockedInputContext = DnaMockery.CreateDatabaseInputContext();
            //XmlDocument siteconfig = new XmlDocument();
            //siteconfig.LoadXml("<SITECONFIG />");
            ISite site = mock.NewMock<ISite>();
            //Stub.On(site).GetProperty("SiteConfig").Will(Return.Value(siteconfig.FirstChild));
            Stub.On(site).GetProperty("SiteID").Will(Return.Value(1));

            Stub.On(site).GetProperty("ModClassID").Will(Return.Value(1));

            BBC.Dna.User user = new BBC.Dna.User(mockedInputContext);
            Stub.On(mockedInputContext).GetProperty("ViewingUser").Will(Return.Value(user));
            Stub.On(mockedInputContext).GetProperty("CurrentSite").Will(Return.Value(site));

            // Create the site options for the new mocked site
            SiteOptionList siteOptionList = new SiteOptionList();
            siteOptionList.CreateFromDatabase(DnaMockery.CreateDatabaseReaderCreator(), DnaDiagnostics.Default);
            siteOptionList.SetValueBool(1, "Forum", "EmailAddressFilter", true, DnaMockery.CreateDatabaseReaderCreator(), null);
            siteOptionList.SetValueBool(1, "General", "IsURLFiltered", true, DnaMockery.CreateDatabaseReaderCreator(), null);

            // Stub the call to the siteoption
            Stub.On(mockedInputContext).Method("GetSiteOptionValueBool").With("Forum", "EmailAddressFilter").Will(Return.Value(true));
            // Stub the call to the siteoption
            Stub.On(mockedInputContext).Method("GetSiteOptionValueBool").With("General", "IsURLFiltered").Will(Return.Value(true));

            // Initialise the profanities object
            var p = new ProfanityFilter(DnaMockery.CreateDatabaseReaderCreator(), DnaDiagnostics.Default, CacheFactory.GetCacheManager(), null, null);

            using (IDnaDataReader reader = mockedInputContext.CreateDnaDataReader("getuitemplate"))
            {
                Stub.On(mockedInputContext).Method("CreateDnaDataReader").With("getuitemplate").Will(Return.Value(reader));

                // Create a new UITemplate object and get the list of fields
                UITemplate testUITemplate = new UITemplate(mockedInputContext);
                testUITemplate.UITemplateID = _createdUITemplateID;
                testUITemplate.LoadTemplate();
                List<KeyValuePair<string, string>> parameters = new List<KeyValuePair<string, string>>();

                KeyValuePair<string, string> subject = new KeyValuePair<string, string>("SUBJECT", "TestSubject");
                parameters.Add(subject);
                KeyValuePair<string, string> description = new KeyValuePair<string, string>("Description", "TestDescription with f**k");
                parameters.Add(description);

                testUITemplate.ProcessParameters(parameters);

                testUITemplate.Validate();

                DnaXmlValidator validator = new DnaXmlValidator(testUITemplate.RootElement.InnerXml, _schemaUri);
                validator.Validate();
            }
            Console.WriteLine("After Test08GetUITemplateForValidationParamsWithProfanity");
        }
Пример #42
0
        public void HandleSignal_CorrectSignal_ReturnsValidObject()
        {
            var signalType = "recache-terms";
            var cacheObj = GetProfanityCacheObject();
            var modclassId = new Queue<int>();
            modclassId.Enqueue(1);
            modclassId.Enqueue(2);
            modclassId.Enqueue(2);
            
            var forumId = new Queue<int>();
            forumId.Enqueue(1);
            forumId.Enqueue(2);
            forumId.Enqueue(2);
            
            var profanity = new Queue<string>();
            profanity.Enqueue("hello");
            profanity.Enqueue("hello1");
            profanity.Enqueue("hello");
            var refer = new Queue<byte>();
            refer.Enqueue(1);
            refer.Enqueue(0);
            refer.Enqueue(1);

            var cache = _mocks.DynamicMock<ICacheManager>();
             cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey("LASTUPDATE"))).Return(false).Repeat.Once();
             cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey())).Return(true).Repeat.Once();
             cache.Stub(x => x.GetData(ProfanityFilter.GetCacheKey())).Return(cacheObj).Repeat.Once();

            var reader = _mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(true).Repeat.Times(3);
            reader.Stub(x => x.GetInt32("ModClassID")).Return(0).WhenCalled(x => x.ReturnValue = modclassId.Dequeue());
            reader.Stub(x => x.GetInt32("ForumID")).Return(0).WhenCalled(x => x.ReturnValue = forumId.Dequeue());
            reader.Stub(x => x.GetStringNullAsEmpty("Profanity")).Return("").WhenCalled(x => x.ReturnValue = profanity.Dequeue());
            reader.Stub(x => x.GetByte("Refer")).Return(1).WhenCalled(x => x.ReturnValue = refer.Dequeue());


            var creator = _mocks.DynamicMock<IDnaDataReaderCreator>();
            creator.Stub(x => x.CreateDnaDataReader("getallprofanities")).Return(reader);

            var diag = _mocks.DynamicMock<IDnaDiagnostics>();
            _mocks.ReplayAll();

            var profanityObj = new ProfanityFilter(creator, diag, cache, null, null);
            creator.AssertWasNotCalled(x => x.CreateDnaDataReader("getallprofanities"));
            Assert.AreEqual(cacheObj.ProfanityClasses.ModClassProfanities.Count, ProfanityFilter.GetObject().GetObjectFromCache().ProfanityClasses.ModClassProfanities.Keys.Count);
            Assert.AreEqual(cacheObj.ProfanityClasses.ForumProfanities.Count, ProfanityFilter.GetObject().GetObjectFromCache().ProfanityClasses.ForumProfanities.Keys.Count);

            Assert.IsTrue(profanityObj.HandleSignal(signalType, null));

            creator.AssertWasCalled(x => x.CreateDnaDataReader("getallprofanities"));
            
        }
Пример #43
0
        public void InitialiseProfanities_VersionInCache_ReturnsCachedObj()
        {
            var cacheObj = GetProfanityCacheObject();

            var cache = _mocks.DynamicMock<ICacheManager>();
            cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey("LASTUPDATE"))).Return(false);
            cache.Stub(x => x.Contains(ProfanityFilter.GetCacheKey())).Return(true);
            cache.Stub(x => x.GetData(ProfanityFilter.GetCacheKey())).Return(cacheObj);

            var reader = _mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(false);


            var creator = _mocks.DynamicMock<IDnaDataReaderCreator>();
            creator.Stub(x => x.CreateDnaDataReader("getallprofanities")).Return(reader);

            var diag = _mocks.DynamicMock<IDnaDiagnostics>();
            _mocks.ReplayAll();

            var profanityObj = new ProfanityFilter(creator, diag, cache, null, null);

            Assert.AreEqual(cacheObj.ProfanityClasses.ModClassProfanities.Count, ProfanityFilter.GetObject().GetObjectFromCache().ProfanityClasses.ModClassProfanities.Keys.Count);
            creator.AssertWasNotCalled(x => x.CreateDnaDataReader("getallprofanities"));
        }
Пример #44
0
		/// <summary>
		/// Designed to be called once at application Start-up
		/// </summary>
		/// <param name="rootPath">The folder that's the root of the application</param>
		public static void OnDnaStartup(string rootPath)
		{
#if DEBUG
            /**************************************
             *                                    *
             *    DEBUGGING FROM THE WORD GO!     *
             *                                    *
             **************************************/
            // System.Diagnostics.Debugger.Launch();
#endif

			_appContext = new AppContext(rootPath);

            _dnaCacheManager = CacheFactory.GetCacheManager();
		    

			DnaDiagnostics.Initialise(TheAppContext.Config.InputLogFilePath, "DNALOG");
#if DEBUG
			DnaDiagnostics.WriteHeader("OnDnaStartup - DEBUG");
#else
                DnaDiagnostics.WriteHeader("OnDnaStartup - RELEASE");
#endif

			Statistics.InitialiseIfEmpty(/*TheAppContext*/);

            //load the smiley list
            SmileyTranslator.LoadSmileys(ReaderCreator);

            ICacheManager cacheMemcachedManager = null;
            try
            {
                cacheMemcachedManager = CacheFactory.GetCacheManager("Memcached");
            }
            catch (Exception error)
            {
                DnaDiagnostics.Default.WriteWarningToLog("OnDnaStartup", "Unable to use memcached cachemanager - falling back to static inmemory");
                DnaDiagnostics.Default.WriteExceptionToLog(error);
                cacheMemcachedManager = new StaticCacheManager();
            }

            //new signal objects below here
            _appContext.TheSiteList = new SiteList(AppContext.ReaderCreator, DnaDiagnostics.Default, cacheMemcachedManager, TheAppContext._dnaConfig.RipleyServerAddresses, TheAppContext._dnaConfig.DotNetServerAddresses);
            var bannedEmails = new BannedEmails(AppContext.ReaderCreator, DnaDiagnostics.Default, cacheMemcachedManager, TheAppContext._dnaConfig.RipleyServerAddresses, TheAppContext._dnaConfig.DotNetServerAddresses);
            var userGroups = new UserGroups(AppContext.ReaderCreator, DnaDiagnostics.Default, cacheMemcachedManager, TheAppContext._dnaConfig.RipleyServerAddresses, TheAppContext._dnaConfig.DotNetServerAddresses);
            var profanityFilter = new ProfanityFilter(AppContext.ReaderCreator, DnaDiagnostics.Default, cacheMemcachedManager, TheAppContext._dnaConfig.RipleyServerAddresses, TheAppContext._dnaConfig.DotNetServerAddresses);
            var moderationClasses = new ModerationClassListCache(AppContext.ReaderCreator, DnaDiagnostics.Default, cacheMemcachedManager, TheAppContext._dnaConfig.RipleyServerAddresses, TheAppContext._dnaConfig.DotNetServerAddresses);

            // Setup the banned user agents list
            InitialiseBannedUserAgents();
		}