public void preservesRelatedLinksIfConfigured() { string html = "<a href='/foo'>Link</a><img src='/bar'> <img src='javascript:alert()'>"; string clean = NSoupClient.Clean(html, "http://example.com/", Whitelist.BasicWithImages.PreserveRelativeLinks(true)); Assert.AreEqual("<a href=\"/foo\" rel=\"nofollow\">Link</a>\n<img src=\"/bar\" /> \n<img />", clean); }
public void supplyOutputSettings() { // test that one can override the default document output settings OutputSettings os = new OutputSettings(); os.PrettyPrint(false); os.SetEscapeMode(Entities.EscapeMode.Extended); string html = "<div><p>ℬ</p></div>"; string customOut = NSoupClient.Clean(html, "http://foo.com/", Whitelist.Relaxed, os); string defaultOut = NSoupClient.Clean(html, "http://foo.com/", Whitelist.Relaxed); Assert.AreNotSame(defaultOut, customOut); Assert.AreEqual("<div><p>ℬ</p></div>", customOut); Assert.AreEqual("<div>\n" + " <p>ℬ</p>\n" + "</div>", defaultOut); os.SetEncoding(Encoding.ASCII); os.SetEscapeMode(Entities.EscapeMode.Base); String customOut2 = NSoupClient.Clean(html, "http://foo.com/", Whitelist.Relaxed, os); Assert.AreEqual("<div><p>ℬ</p></div>", customOut2); }
public void resolvesRelativeLinks() { String html = "<a href='/foo'>Link</a><img src='/bar'>"; String clean = NSoupClient.Clean(html, "http://example.com/", Whitelist.BasicWithImages); Assert.AreEqual("<a href=\"http://example.com/foo\" rel=\"nofollow\">Link</a>\n<img src=\"http://example.com/bar\" />", clean); }
public void cleansInternationalTextNoEscaping() { var outputSettings = new OutputSettings(); outputSettings = (OutputSettings)outputSettings.Clone(); outputSettings.EscapeMode.GetMap().Clear(); var result = NSoupClient.Clean("׀¿ׁ€׀¸׀²׀µׁ‚", "", Whitelist.None, outputSettings); Assert.AreEqual("׀¿ׁ€׀¸׀²׀µׁ‚", result); }
public void addsTagOnAttributesIfNotSet() { String html = "<p class='foo' src='bar'>One</p>"; Whitelist whitelist = new Whitelist() .AddAttributes("p", "class"); // ^^ whitelist does not have explicit tag add for p, inferred from add attributes. String clean = NSoupClient.Clean(html, whitelist); Assert.AreEqual("<p class=\"foo\">One</p>", clean); }
public void handlesCustomProtocols() { String html = "<img src='cid:12345' /> <img src='data:gzzt' />"; String dropped = NSoupClient.Clean(html, Whitelist.BasicWithImages); Assert.AreEqual("<img /> \n<img />", dropped); String preserved = NSoupClient.Clean(html, Whitelist.BasicWithImages.AddProtocols("img", "src", "cid", "data")); Assert.AreEqual("<img src=\"cid:12345\" /> \n<img src=\"data:gzzt\" />", preserved); }
public void handlesAllPseudoTag() { String html = "<p class='foo' src='bar'><a class='qux'>link</a></p>"; Whitelist whitelist = new Whitelist() .AddAttributes(":all", "class") .AddAttributes("p", "style") .AddTags("p", "a"); String clean = NSoupClient.Clean(html, whitelist); Assert.AreEqual("<p class=\"foo\"><a class=\"qux\">link</a></p>", clean); }
public void handlesFramesets() { String dirty = "<html><head><script></script><noscript></noscript></head><frameset><frame src=\"foo\" /><frame src=\"foo\" /></frameset></html>"; String clean = NSoupClient.Clean(dirty, Whitelist.Basic); Assert.AreEqual("", clean); // nothing good can come out of that Document dirtyDoc = NSoupClient.Parse(dirty); Document cleanDoc = new Cleaner(Whitelist.Basic).Clean(dirtyDoc); Assert.IsFalse(cleanDoc == null); Assert.AreEqual(0, cleanDoc.Body.ChildNodes.Count); }
public void cleansInternationalText() { var result = NSoupClient.Clean("׀¿ׁ€׀¸׀²׀µׁ‚", Whitelist.None); Assert.AreEqual("׀¿ׁ€׀¸׀²׀µׁ‚", result); }
public void cleansInternationalText() { Assert.AreEqual("׀¿ׁ€׀¸׀²׀µׁ‚", NSoupClient.Clean("׀¿ׁ€׀¸׀²׀µׁ‚", Whitelist.None)); }