Exemple #1
0
 static Honeypot()
 {
     SetDefaults();
     InputNames = new HoneypotInputNameCollection();
     Worker = new HoneypotWorker();
     CustomRules = new HoneypotRuleCollection();
 }
        public void GetHtml_ShouldSetTheCssClassNameOnTrapInput()
        {
            // Arrange
            var worker = new HoneypotWorker();

            //Act
            string html = worker.GetHtml(MvcHelper.GetHtmlHelper(), MvcHelper.GetHttpContext()).ToString();

            // Assert
            Assert.True(html.Contains(Honeypot.CssClassName));
        }
        public void GetHoneypotData_ShouldReturnHoneypotDefaultInputValue_WhenInputNamesCollectionCountIsLessThanTwo()
        {
            // Arrange
            var worker = new HoneypotWorker();
            Honeypot.InputNames.Clear();

            //Act
            HoneypotData token = worker.GetHoneypotData(MvcHelper.GetHttpContext());

            //Assert
            Assert.Equal(token.InputNameValue, HoneypotData.DefaultFieldName);
        }
        public void GetHoneypotData_ShouldReturnRandomInputName_WhenInputNamesCollectionCountIsGreaterThanOne()
        {
            // Arrange
            var worker = new HoneypotWorker();
            Honeypot.InputNames.Add("test");
            Honeypot.InputNames.Add("name");

            // Act
            HoneypotData token = worker.GetHoneypotData(MvcHelper.GetHttpContext());

            // Assert
            Assert.NotEqual(token.InputNameValue, HoneypotData.DefaultFieldName);
        }
        public void IsBot_ShouldBeTrue_IfHpInputNameIsInFormAndHasValue()
        {
            // Arrang
            Honeypot.InputNames.Clear();
            Honeypot.CustomRules.Clear();
            var worker = new HoneypotWorker();
            var token = new HoneypotData(HoneypotData.DefaultFieldName);
            var serializer = new HoneypotDataSerializer();
            var form = new NameValueCollection {
                { "FirstName", "Jon" }, {
                    HoneypotData.FormKeyFieldName,
                    serializer.Serialize(token)
                }, {token.InputNameValue, "I am a bot"}
            };

            // Act
            bool isBot = worker.IsBot(MvcHelper.GetHttpContext(form));

            // Assert
            Assert.True(isBot);
        }
        public void ValidateRules_ShouldReturnTrue_WhenThereAreNoRules()
        {
            // Arrange
            var worker = new HoneypotWorker();
            Honeypot.CustomRules.Clear();
            //Act
            bool isValid = worker.ValidateRules(new NameValueCollection());

            // Assert
            Assert.True(isValid);
        }
        public void ValidateRules_ShouldReturnTrue_WhenAllRulesPass()
        {
            // Arrange
            var worker = new HoneypotWorker();
            Honeypot.CustomRules.Clear();
            Func<NameValueCollection, bool> rule = (form) => false;
            Honeypot.CustomRules.Add(rule);
            //Act
            bool isValid = worker.ValidateRules(new NameValueCollection());

            // Assert
            Assert.True(isValid);
        }
        public void ValidateRules_ShouldReturnFalse_WhenAnyRuleFails()
        {
            // Arrange
            var worker = new HoneypotWorker();
            Honeypot.CustomRules.Clear();
            Func<NameValueCollection, bool> passingRule = (form) => false;
            Func<NameValueCollection, bool> failingRule = (form) => true;
            Honeypot.CustomRules.Add(passingRule);
            Honeypot.CustomRules.Add(failingRule);
            Honeypot.CustomRules.Add(passingRule);
            //Act
            bool isValid = worker.ValidateRules(new NameValueCollection());

            // Assert
            Assert.False(isValid);
        }
        public void IsBot_ShouldReturnTrue_WhenValidateRulesReturnsFalse()
        {
            // Arrang
            Honeypot.InputNames.Clear();
            var worker = new HoneypotWorker();
            Honeypot.CustomRules.Clear();

            var token = new HoneypotData(HoneypotData.DefaultFieldName);
            var serializer = new HoneypotDataSerializer();
            var form = new NameValueCollection {
                { "FirstName", "Jon" }, {
                    HoneypotData.FormKeyFieldName,
                    serializer.Serialize(token)
                },
                {token.InputNameValue, ""}
            };
            Func<NameValueCollection, bool> failingRule = (f) => true;
            Honeypot.CustomRules.Add(failingRule);

            // Act
            bool isBot = worker.IsBot(MvcHelper.GetHttpContext(form));

            // Assert
            Assert.True(isBot);
        }
        public void IsBot_ShouldBeTrue_IfTokenInputIsNotInForm()
        {
            // Arrang
            var worker = new HoneypotWorker();
            var form = new NameValueCollection { { "FirstName", "Jon" } };

            // Act
            bool isBot = worker.IsBot(MvcHelper.GetHttpContext(form));

            // Assert
            Assert.True(isBot);
        }