コード例 #1
0
        public void SimpleRegexRulesHttpUpdater_should_not_update_rules_when_remote_file_not_found_real_request()
        {
            // Arrange
            var notFoundUrl   = "https://raw.githubusercontent.com/MakingSense/safe-browsing/resources/notfound";
            var originalRegex = new Regex(".*");
            var rules         = new SimpleRegexRules(new[] { originalRegex });
            var sut           = new SimpleRegexRulesHttpUpdater(notFoundUrl, rules);

            Assert.AreEqual(1, rules.Blacklist.Count);

            // Act
            try
            {
                sut.UpdateAsync().Wait();

                // Assert
                Assert.Fail("Update should throw exception when URL not found");
            }
            catch
            {
                // Assert
                Assert.AreEqual(1, rules.Blacklist.Count);
                Assert.AreEqual(originalRegex, rules.Blacklist.First());
            }
        }
コード例 #2
0
        public void SimpleRegexRulesHttpUpdater_should_not_update_list_when_response_is_not_modified()
        {
            // Arrange
            var anyUrl        = "http://example.com/links-blacklist.txt";
            var originalRegex = new Regex(".*");
            var rules         = new SimpleRegexRules(new[] { originalRegex });
            var originalList  = rules.Blacklist;
            var httpClient    = new HttpClientDouble();

            httpClient.Setup_GetString(new SimplifiedHttpResponse()
            {
                Body        = "0\r\n  1  \n2\r\n3",
                NotModified = true
            });
            var sut = new SimpleRegexRulesHttpUpdater(anyUrl, rules, httpClient);

            Assert.AreEqual(1, rules.Blacklist.Count);

            // Act
            sut.UpdateAsync().Wait();

            // Assert
            Assert.AreEqual(1, rules.Blacklist.Count);
            Assert.AreEqual(originalRegex, rules.Blacklist.First());
            Assert.AreSame(originalList, rules.Blacklist);
        }
コード例 #3
0
        public void SimpleRegexRulesHttpUpdater_should_update_rules_reading_remote_file_real_request()
        {
            // Arrange
            var realUrl = "https://raw.githubusercontent.com/MakingSense/safe-browsing/resources/links-blacklist.txt";
            var rules   = new SimpleRegexRules();
            var sut     = new SimpleRegexRulesHttpUpdater(realUrl, rules);

            Assert.IsFalse(rules.Blacklist.Any());

            // Act
            sut.UpdateAsync().Wait();

            // Assert
            Assert.IsTrue(rules.Blacklist.Any());
        }
コード例 #4
0
        public void SimpleRegexUrlChecker_should_respond_to_rules_updating()
        {
            // Arrange
            var rules = new SimpleRegexRules();
            var sut   = new SimpleRegexUrlChecker(rules);
            var url   = "http://www.jpe082ver.info/test";

            Assert.IsTrue(sut.Check(url).IsSafe);

            // Act
            rules.Update(new[] { new Regex(@"^.*jpe082ver\.info.*$") });
            var result = sut.Check(url);

            // Assert
            Assert.AreEqual(url, result.Url);
            Assert.AreEqual(ThreatType.Unknow, result.ThreatType);
            Assert.IsFalse(result.IsSafe);
        }
コード例 #5
0
 /// <summary>
 /// Create a new instance based on specified rules
 /// </summary>
 /// <param name="rules"></param>
 public SimpleRegexUrlChecker(SimpleRegexRules rules)
 {
     _rules = rules;
 }
コード例 #6
0
 /// <summary>
 /// Create a new instance for an already existent set of rules
 /// </summary>
 /// <param name="url"></param>
 /// <param name="rules"></param>
 /// /// <param name="httpClient">Optional alternative implementation of HttpClient</param>
 public SimpleRegexRulesHttpUpdater(string url, SimpleRegexRules rules, IHttpClient httpClient = null)
 {
     _httpClient = httpClient ?? new Internal.HttpClient();
     Url         = url;
     Rules       = rules;
 }