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()); } }
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); }
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()); }
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); }
/// <summary> /// Create a new instance based on specified rules /// </summary> /// <param name="rules"></param> public SimpleRegexUrlChecker(SimpleRegexRules rules) { _rules = rules; }
/// <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; }