using AIStudio.Tools.Web; using HtmlAgilityPack; namespace AIStudio.Tests.Tools.Web; /// /// Checks the rules web pages and mails share for HTML from strangers. /// [TestFixture] public sealed class HtmlContentRulesTests { [TestCase("javascript:alert(1)", ExpectedResult = true)] [TestCase(" JavaScript:alert(1)", ExpectedResult = true)] [TestCase("java script:alert(1)", ExpectedResult = true)] [TestCase("java\nscript:alert(1)", ExpectedResult = true)] [TestCase("vbscript:msgbox", ExpectedResult = true)] [TestCase("data:text/html;base64,PHNjcmlwdD4=", ExpectedResult = true)] [TestCase("https://example.org/report", ExpectedResult = false)] [TestCase("mailto:bob@example.org", ExpectedResult = false)] [TestCase("#top", ExpectedResult = false)] public bool LinksRunningCodeAreFound(string url) => HtmlContentRules.IsScriptOrDataUrl(url); [TestCase("
x
", ExpectedResult = true)] [TestCase("
x
", ExpectedResult = true)] [TestCase("
x
", ExpectedResult = true)] [TestCase("", ExpectedResult = true)] [TestCase("", ExpectedResult = true)] [TestCase("
x
", ExpectedResult = false)] [TestCase("
x
", ExpectedResult = false)] [TestCase("
x
", ExpectedResult = false)] public bool HiddenElementsAreFound(string html) => HtmlContentRules.IsHiddenByMarkup(HtmlNode.CreateNode(html)); }