123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734 |
- package com.gitblit.wicket;
-
- import static org.junit.Assert.*;
-
- import java.io.IOException;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- import com.gitblit.manager.IManager;
- import com.gitblit.manager.IPluginManager;
- import com.gitblit.manager.IRuntimeManager;
- import com.gitblit.models.PluginRegistry;
- import com.gitblit.tests.mock.MockGitblitContext;
- import com.gitblit.tests.mock.MockRuntimeManager;
- import org.apache.wicket.util.tester.WicketTester;
- import org.jsoup.Jsoup;
- import org.jsoup.nodes.Document;
- import org.junit.Before;
- import org.junit.Test;
-
- import com.gitblit.Keys;
- import com.gitblit.tests.mock.MemorySettings;
- import com.gitblit.utils.JSoupXssFilter;
- import com.gitblit.wicket.MarkupProcessor.MarkupDocument;
- import ro.fortsoft.pf4j.PluginState;
- import ro.fortsoft.pf4j.PluginWrapper;
- import ro.fortsoft.pf4j.Version;
-
- public class MarkupProcessorTest
- {
- private WicketTester tester;
- private MockGitblitContext gbctx;
-
- @Before
- public void setUp()
- {
- IRuntimeManager rm = new MockRuntimeManager(getSettings());
- gbctx = new MockGitblitContext();
- gbctx.addManager(rm);
- tester = new WicketTester(new GitBlitWebApp(null, null,
- rm,
- getPluginManager(),
- null, null, null,
- null, null, null,
- null, null, null));
- }
-
-
-
- /*
- * The unit tests for MarkupProcessor have two major goals.
- * One is to check that links are rendered correctly, and
- * the second one is that XSS protection is working.
- *
- * The proper rendering of markup for the various Wiki/Markdown
- * languages is not in focus. This, as a secondary goal, the Wiki/Md
- * syntax rendering can be tested to make sure that when switching to
- * a new or updated wiki syntax library nothing breaks and the pages
- * are still rendered correctly.
- * Or, to make sure things actually render correctly, because currently
- * they don't as cen be seen with reference images and wiki links,
- * for example.
- */
-
-
-
- @Test
- public void testParseMdRepoRelativeLink()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a page](file.md)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/file.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeLinkSubfolder()
- {
- String psep ="%2F";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a file](folder/file.md)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/folder"+psep+"file.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeLinkSubSubfolder()
- {
- String psep ="%2F";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a file](sub/folder/file.md)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/sub"+psep+"folder"+psep+"file.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeLinkUtf8()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a page](日本語.md)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/%E6%97%A5%E6%9C%AC%E8%AA%9E.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeLinkSubfolderUtf8()
- {
- String psep ="%2F";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a file](folder/receitas_de_culinária/file.md)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/folder"+psep+"receitas_de_culin%C3%A1ria"+psep+"file.md", href);
- }
-
-
- @Test
- public void testParseMdExternalLink()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a website](http://example.com/page.html)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","http://example.com/page.html", href);
- }
-
- @Test
- public void testParseMdExternalLinkBare()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: <http://example.com/page.html>";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","http://example.com/page.html", href);
- }
-
-
- // We leave it up to the document author to write working links in the document
- @Test
- public void testParseMdExternalLinkUtf8()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [Japanese](http://example.com/lang/日本語.html)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","http://example.com/lang/日本語.html", href);
- }
-
-
-
- @Test
- public void testParseMdRepoRelativeRefLink()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a page][1]\n\n[1]: file.md";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/file.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeRefLinkSubfolder()
- {
- String psep ="%2F";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a file][file]\n\n[file]: folder/file.md";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/folder"+psep+"file.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeRefLinkSubSubfolder()
- {
- String psep ="%2F";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a file][l1] \n\n[l1]: sub/folder/file.md";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/sub"+psep+"folder"+psep+"file.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeRefLinkUtf8()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a page][x]\n\n[x]: 日本語.md";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/%65%E5%67%2C%8A%Ee.md", href);
- }
-
- @Test
- public void testParseMdRepoRelativeRefLinkSubfolderUtf8()
- {
- String psep ="%2F";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a file][xy]\n\n[xy]: folder/receitas_de_culinária/file.md";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/folder"+psep+"receitas_de_culin%C3%A1ria"+psep+"file.md", href);
- }
-
-
- @Test
- public void testParseMdExternalRefLink()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [a website][ex]\n\n[ex]: http://example.com/page.html";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","http://example.com/page.html", href);
- }
-
-
-
-
-
- /*
- * Apparently wiki style links currently do not work in Markdown.
-
- @Test
- public void testParseMdWikiLink()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "link: [[page]]";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/testrepo/12345abcde/page", href);
- }
- */
-
-
- @Test
- public void testParseMdRepoRelativeImage()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a graphic](graphic.gif)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/graphic.gif", ref);
-
- markup = "image: ![a graphic](graphic.gif \"Some graphic\")";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/graphic.gif", ref);
- }
-
- @Test
- public void testParseMdRepoRelativeImageUtf8()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![look the dog](ドッグ.gif)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/%E3%83%89%E3%83%83%E3%82%B0.gif", ref);
-
- markup = "image: ![look the dog](ドッグ.gif \"シーバ\")";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/%E3%83%89%E3%83%83%E3%82%B0.gif", ref);
- }
-
- @Test
- public void testParseMdRepoRelativeImageSubfolder()
- {
- String psep ="!";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a graphic](results/graphic.gif)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/results"+psep+"graphic.gif", ref);
-
- markup = "image: ![a graphic](results/graphic.gif \"Some graphic\")";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/results"+psep+"graphic.gif", ref);
- }
-
- @Test
- public void testParseMdRepoRelativeImageSubfolderUtf8()
- {
- String psep ="!";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a cat](folder/картинки/cat.jpg)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/folder"+psep+"%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8"+psep+"cat.jpg", ref);
-
- markup = "image: ![a cat](folder/картинки/cat.jpg \"Кошка\")";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/folder"+psep+"%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8"+psep+"cat.jpg", ref);
- }
-
-
- @Test
- public void testParseMdExternalImage()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a cat](http://example.com/cats/meow.jpg)";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","http://example.com/cats/meow.jpg", ref);
-
- markup = "image: ![a cat](http://example.com/cats/meow.jpg \"Miau\")";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","http://example.com/cats/meow.jpg", ref);
- }
-
-
-
-
-
-
- @Test
- public void testParseMdRepoRelativeRefImage()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a graphic][1]\n\n[1]: graphic.gif";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/graphic.gif", ref);
-
- markup = "image: ![a graphic][2]\n\n[2]: graphic.gif \"Some graphic\"";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/graphic.gif", ref);
- }
-
- @Test
- public void testParseMdRepoRelativeRefImageUtf8()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![look the dog][1]\n\n[1]: ドッグ.gif";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/%E3%83%89%E3%83%83%E3%82%B0.gif", ref);
-
- markup = "image: ![look the dog][1]\n\n[1]: ドッグ.gif \"シーバ\"";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/%E3%83%89%E3%83%83%E3%82%B0.gif", ref);
- }
-
- @Test
- public void testParseMdRepoRelativeRefImageSubfolder()
- {
- String psep ="!";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a cat][cat]\n\n[cat]: folder/cat.jpg";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/folder"+psep+"cat.jpg", ref);
-
- markup = "image: ![a cat][cat]\n\n[cat]: folder/cat.jpg \"Кошка\"";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/folder"+psep+"cat.jpg", ref);
- }
-
- @Test
- public void testParseMdRepoRelativeRefImageSubfolderUtf8()
- {
- String psep ="!";
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a cat][i1]\n\n[i1]: folder/картинки/cat.jpg";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/folder"+psep+"%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8"+psep+"cat.jpg", ref);
-
- markup = "image: ![a cat][i1]\n\n[i1]: folder/картинки/cat.jpg \"Кошка\"";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","../raw/testrepo/12345abcde/folder"+psep+"%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8"+psep+"cat.jpg", ref);
- }
-
-
- @Test
- public void testParseMdExternalRefImage()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String markup = "image: ![a cat][1]\n\n[1]: http://example.com/cats/meow.jpg";
- MarkupDocument mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","http://example.com/cats/meow.jpg", ref);
-
- markup = "image: ![a cat][1]\n\n[1]: http://example.com/cats/meow.jpg \"Miau\"";
- mdoc = mp.parse("testrepo", "12345abcde", "main.md", markup);
- doc = Jsoup.parseBodyFragment(mdoc.html);
- ref = doc.getElementsByAttribute("src").attr("src");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect image src rendered","http://example.com/cats/meow.jpg", ref);
- }
-
-
-
-
-
- @Test
- public void testParseMediaWikiRepoRelativeLink()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String psep = "%2F";
- String markup = "link: [[document]]";
- MarkupDocument mdoc = mp.parse("wikirepo", "12345abcde", "main.mw", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("href").attr("href");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect link href rendered","doc/wikirepo/12345abcde/wiki"+ psep + "document", ref);
-
- }
-
- @Test
- public void testParseMediaWikiRepoRelativeLinkUtf8()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String psep = "%2F";
- String markup = "link: [[日本語]]";
- MarkupDocument mdoc = mp.parse("wikirepo", "12345abcde", "main.mw", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","doc/wikirepo/12345abcde/wiki" + psep + "%E6%97%A5%E6%9C%AC%E8%AA%9E", href);
- }
-
-
- @Test
- public void testParseMediaWikiExternalLink()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String psep = "%2F";
- String markup = "link: [http://example.com/some/document.html document]";
- MarkupDocument mdoc = mp.parse("wikirepo", "12345abcde", "main.mw", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("href").attr("href");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect link href rendered","http://example.com/some/document.html", ref);
-
- }
-
- @Test
- public void testParseMediaWikiExternalLinkNumbered()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String psep = "%2F";
- String markup = "link: [http://example.com/some/document.html]";
- MarkupDocument mdoc = mp.parse("wikirepo", "12345abcde", "main.mw", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("href").attr("href");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect link href rendered","http://example.com/some/document.html", ref);
-
- }
-
- @Test
- public void testParseMediaWikiExternalLinkBare()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String psep = "%2F";
- String markup = "link: http://example.com/some/document.html";
- MarkupDocument mdoc = mp.parse("wikirepo", "12345abcde", "main.mw", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String ref = doc.getElementsByAttribute("href").attr("href");
- assertFalse("No reference attribute found: " + mdoc.html, ref.isEmpty());
- assertEquals("Incorrect link href rendered","http://example.com/some/document.html", ref);
-
- }
-
- // We leave it up to the document author to write working links in the document
- @Test
- public void testParseMediaWikiExternalLinkUtf8()
- {
- MarkupProcessor mp = new MarkupProcessor(getSettings(), new JSoupXssFilter());
-
- String psep = "%2F";
- String markup = "link: [http://example.com/lang/日本語.html Japanese]";
- MarkupDocument mdoc = mp.parse("wikirepo", "12345abcde", "main.mw", markup);
- Document doc = Jsoup.parseBodyFragment(mdoc.html);
- String href = doc.getElementsByAttribute("href").attr("href");
- assertEquals("Incorrect link rendered","http://example.com/lang/日本語.html", href);
- }
-
-
-
-
- private MemorySettings getSettings()
- {
- Map<String, Object> backingMap = new HashMap<String, Object>();
-
- backingMap.put(Keys.web.documents, "readme");
- backingMap.put(Keys.web.blobEncodings, "UTF-8 ISO-8859-1");
- backingMap.put(Keys.web.confluenceExtensions, "confluence");
- backingMap.put(Keys.web.markdownExtensions, "md mkd markdown MD MKD");
- backingMap.put(Keys.web.mediawikiExtensions, "mw mediawiki");
- backingMap.put(Keys.web.textileExtensions, "textile");
- backingMap.put(Keys.web.tracwikiExtensions, "tracwiki");
- backingMap.put(Keys.web.twikiExtensions, "twiki");
- backingMap.put(Keys.web.forwardSlashCharacter, "/");
- backingMap.put(Keys.web.mountParameters, true);
-
- MemorySettings ms = new MemorySettings(backingMap);
- return ms;
- }
-
-
- private IPluginManager getPluginManager()
- {
- return new IPluginManager()
- {
- @Override
- public Version getSystemVersion()
- {
- return null;
- }
-
- @Override
- public void startPlugins()
- {
-
- }
-
- @Override
- public void stopPlugins()
- {
-
- }
-
- @Override
- public PluginState startPlugin(String pluginId)
- {
- return null;
- }
-
- @Override
- public PluginState stopPlugin(String pluginId)
- {
- return null;
- }
-
- @Override
- public List<Class<?>> getExtensionClasses(String pluginId)
- {
- return null;
- }
-
- @Override
- public <T> List<T> getExtensions(Class<T> type)
- {
- return null;
- }
-
- @Override
- public List<PluginWrapper> getPlugins()
- {
- return Collections.emptyList();
- }
-
- @Override
- public PluginWrapper getPlugin(String pluginId)
- {
- return null;
- }
-
- @Override
- public PluginWrapper whichPlugin(Class<?> clazz)
- {
- return null;
- }
-
- @Override
- public boolean disablePlugin(String pluginId)
- {
- return false;
- }
-
- @Override
- public boolean enablePlugin(String pluginId)
- {
- return false;
- }
-
- @Override
- public boolean uninstallPlugin(String pluginId)
- {
- return false;
- }
-
- @Override
- public boolean refreshRegistry(boolean verifyChecksum)
- {
- return false;
- }
-
- @Override
- public boolean installPlugin(String url, boolean verifyChecksum) throws IOException
- {
- return false;
- }
-
- @Override
- public boolean upgradePlugin(String pluginId, String url, boolean verifyChecksum) throws IOException
- {
- return false;
- }
-
- @Override
- public List<PluginRegistry.PluginRegistration> getRegisteredPlugins()
- {
- return null;
- }
-
- @Override
- public List<PluginRegistry.PluginRegistration> getRegisteredPlugins(PluginRegistry.InstallState state)
- {
- return null;
- }
-
- @Override
- public PluginRegistry.PluginRegistration lookupPlugin(String idOrName)
- {
- return null;
- }
-
- @Override
- public PluginRegistry.PluginRelease lookupRelease(String idOrName, String version)
- {
- return null;
- }
-
- @Override
- public IManager start()
- {
- return null;
- }
-
- @Override
- public IManager stop()
- {
- return null;
- }
- };
- }
-
- }
|