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("x
", ExpectedResult = true)]
[TestCase("x", ExpectedResult = true)]
[TestCase("x
", ExpectedResult = false)]
[TestCase("x
", ExpectedResult = false)]
[TestCase("x
", ExpectedResult = false)]
public bool HiddenElementsAreFound(string html) => HtmlContentRules.IsHiddenByMarkup(HtmlNode.CreateNode(html));
}