public virtual void HandlesAbsOnImage() { Document doc = iText.StyledXmlParser.Jsoup.Jsoup.Parse("<p><img src=\"/rez/osi_logo.png\" /></p>", "http://jsoup.org/" ); iText.StyledXmlParser.Jsoup.Nodes.Element img = doc.Select("img").First(); NUnit.Framework.Assert.AreEqual("http://jsoup.org/rez/osi_logo.png", img.Attr("abs:src")); NUnit.Framework.Assert.AreEqual(img.AbsUrl("src"), img.Attr("abs:src")); }
public virtual void AbsHandlesRelativeQuery() { Document doc = iText.StyledXmlParser.Jsoup.Jsoup.Parse("<a href='?foo'>One</a> <a href='bar.html?foo'>Two</a>" , "http://jsoup.org/path/file?bar"); iText.StyledXmlParser.Jsoup.Nodes.Element a1 = doc.Select("a").First(); NUnit.Framework.Assert.AreEqual("http://jsoup.org/path/file?foo", a1.AbsUrl("href")); iText.StyledXmlParser.Jsoup.Nodes.Element a2 = doc.Select("a")[1]; NUnit.Framework.Assert.AreEqual("http://jsoup.org/path/bar.html?foo", a2.AbsUrl("href")); }
public virtual void HandlesBaseUri() { iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf("a"); Attributes attribs = new Attributes(); attribs.Put("relHref", "/foo"); attribs.Put("absHref", "http://bar/qux"); iText.StyledXmlParser.Jsoup.Nodes.Element noBase = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, "", attribs); NUnit.Framework.Assert.AreEqual("", noBase.AbsUrl("relHref")); // with no base, should NOT fallback to href attrib, whatever it is NUnit.Framework.Assert.AreEqual("http://bar/qux", noBase.AbsUrl("absHref")); // no base but valid attrib, return attrib iText.StyledXmlParser.Jsoup.Nodes.Element withBase = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, "http://foo/" , attribs); NUnit.Framework.Assert.AreEqual("http://foo/foo", withBase.AbsUrl("relHref")); // construct abs from base + rel NUnit.Framework.Assert.AreEqual("http://bar/qux", withBase.AbsUrl("absHref")); // href is abs, so returns that NUnit.Framework.Assert.AreEqual("", withBase.AbsUrl("noval")); iText.StyledXmlParser.Jsoup.Nodes.Element dodgyBase = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, "wtf://no-such-protocol/" , attribs); NUnit.Framework.Assert.AreEqual("http://bar/qux", dodgyBase.AbsUrl("absHref")); }
public virtual void HandlesAbsPrefixOnHasAttr() { // 1: no abs url; 2: has abs url Document doc = iText.StyledXmlParser.Jsoup.Jsoup.Parse("<a id=1 href='/foo'>One</a> <a id=2 href='http://jsoup.org/'>Two</a>" ); iText.StyledXmlParser.Jsoup.Nodes.Element one = doc.Select("#1").First(); iText.StyledXmlParser.Jsoup.Nodes.Element two = doc.Select("#2").First(); NUnit.Framework.Assert.IsFalse(one.HasAttr("abs:href")); NUnit.Framework.Assert.IsTrue(one.HasAttr("href")); NUnit.Framework.Assert.AreEqual("", one.AbsUrl("href")); NUnit.Framework.Assert.IsTrue(two.HasAttr("abs:href")); NUnit.Framework.Assert.IsTrue(two.HasAttr("href")); NUnit.Framework.Assert.AreEqual("http://jsoup.org/", two.AbsUrl("href")); }
public virtual void HandlesAbsOnProtocolessAbsoluteUris() { Document doc1 = iText.StyledXmlParser.Jsoup.Jsoup.Parse("<a href='//example.net/foo'>One</a>", "http://example.com/" ); Document doc2 = iText.StyledXmlParser.Jsoup.Jsoup.Parse("<a href='//example.net/foo'>One</a>", "https://example.com/" ); iText.StyledXmlParser.Jsoup.Nodes.Element one = doc1.Select("a").First(); iText.StyledXmlParser.Jsoup.Nodes.Element two = doc2.Select("a").First(); NUnit.Framework.Assert.AreEqual("http://example.net/foo", one.AbsUrl("href")); NUnit.Framework.Assert.AreEqual("https://example.net/foo", two.AbsUrl("href")); Document doc3 = iText.StyledXmlParser.Jsoup.Jsoup.Parse("<img src=//www.google.com/images/errors/logo_sm.gif alt=Google>" , "https://google.com"); NUnit.Framework.Assert.AreEqual("https://www.google.com/images/errors/logo_sm.gif", doc3.Select("img").Attr ("abs:src")); }