org.b3log.symphony.util.MarkdownsTestCase.java Source code

Java tutorial

Introduction

Here is the source code for org.b3log.symphony.util.MarkdownsTestCase.java

Source

/*
 * Symphony - A modern community (forum/SNS/blog) platform written in Java.
 * Copyright (C) 2012-2018,  b3log.org & hacpai.com
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.b3log.symphony.util;

import java.io.FileReader;
import java.net.URL;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.testng.Assert;
import org.apache.commons.io.IOUtils;
import org.b3log.latke.Latkes;
import org.testng.annotations.Test;

/**
 * Markdown utilities test case.
 *
 * @author <a href="http://88250.b3log.org">Liang Ding</a>
 * @author <a href="http://zephyr.b3log.org">Zephyr</a>
 * @version 2.4.1.7, May 2, 2017
 * @since 0.1.6
 */
public class MarkdownsTestCase {

    static {
        Latkes.initRuntimeEnv();
    }

    @Test
    public void jsoupParse() {
        final Document parse = Jsoup.parse("<p><strong><br>??????</strong></p>\n" + "<hr>\n"
                + "<p> <br> -?  java <br> -?  javascript<br> -???????<br> -?blog?<br> -  <br> -           </p>\n"
                + "<p> ???</p>\n"
                + "<p>1java ???a1?????<br>  A ) a1.java            B) a1.class             C) a1                    D) </p>\n"
                + "<p>2  Java<br>  A) ????<br>  B) ?????<br>  C) ????<br>  D)?</p>\n"
                + "<p>3  mainJava??main?<br>       A)public  static  void  main<br>      B)public  static  void   main String[]  args <br>   C)public  static int  mainString  [] arg <br>   D)public  void  mainString  arg[] </p>\n"
                + "<p>4 Java??????????????????? <br>A)??              B)               C)?         D)Java??</p>\n"
                + "<p>5  A?BB?CJava?? </p>\n"
                + "<pre><code>1.    A  a0=new  A(); \n" + "</code></pre><ol>\n" + "<li>A  a1 =new  B(); </li>\n"
                + "<li>A  a2=new  C();<br>       <br>A)?1<br>B)1?23<br>C)1?2?32?3?<br>D)1?23 </li>\n"
                + "</ol>\n"
                + "<p>6 ? <br>     1  String  s1=a?+b?;<br>    2   String  s2=new  Strings1<br>3    ifs1= =s2<br>4       System.out.println(= =  is succeeded?);<br>5     if (s1.equals(s2))<br>6        System.out.println(.equals() is succeeded?);<br>A)46<br>B)46?<br>C)64?<br> D)4?6? </p>\n"
                + "<p>7 ??18??</p>\n"
                + "<p>A)int B) char C) varchar D)text </p>\n"
                + "<p>8?<br>     A.)? B) C)  D) </p>\n"
                + "<p>9 HTML?Javascript?<br>   A)<javascript></javascript><br>   B)<script></script><br>   C) <head></head><br>   D) <body </body></p>\n"
                + "<p>10 ?</p>\n"
                + "<p><input id=\"btnGo\" type=\"button\" value=\"?\" class=\"btn\"/><br>A)  $(&quot;#btnGo&quot;)<br>B)   $(&quot;.btnGo&quot;)<br>C)  $(&quot;.btn&quot;)<br>    D)  $(&quot;input[type=&#39;button&#39;]&quot;)</p>\n"
                + "<p></p>\n"
                + "<p> <br>-Java?</p>\n"
                + "<p>-java?listMap,Set, Queue</p>\n"
                + "<p>-??<br>Spring:<br>springmvcstruts2):<br>Hibernatemybatis):<br>Jquery:<br>Bootstrap</p>\n"
                + "<p>-Javascript??</p>\n"
                + "<p>-sql<br>Select * from Table:<br>Where :<br>Having:<br>Group by:<br>Order by:</p>\n"
                + "<p> ?<br><br>-</p>\n"
                + "<p>-java(SSH)</p>\n"
                + "<p>-?</p>\n"
                + "<p>-?:</p>\n"
                + "<p>-?</p>\n" + "<hr>\n");

        final String html = parse.html();
        System.out.println(html);
        Assert.assertTrue(html.contains("<body < body>")); // Jsoup bug
    }

    /**
     * Tag test.
     */
    @Test
    public void tag() {
        if (Markdowns.MARKED_AVAILABLE) {
            final String kbd = "<kbd>DV</kbd>";

            String html = Markdowns.toHTML(kbd);
            html = Markdowns.clean(html, "");

            Assert.assertTrue(html.contains("<kbd>") && html.contains("</kbd>"));
        }
    }

    /**
     * XSS test.
     */
    @Test
    public void clean() {
        if (Markdowns.MARKED_AVAILABLE) {
            final String md = "<a href='data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K'>a link</a>";

            final String html = Markdowns.toHTML(md);
            final String securedHTML = Markdowns.clean(html, "");

            Assert.assertFalse(securedHTML.contains("href"));
        }
    }

    /**
     * Auto space test.
     */
    @Test
    public void space() {
        if (Markdowns.MARKED_AVAILABLE) {
            final String md = "SymJava??[Sym](https://hacpai.com)?";
            final String html = Markdowns.toHTML(md);

            Assert.assertEquals(html,
                    "<p>Sym  Java ??<a href=\"https://hacpai.com\"> Sym</a>?</p>");
        }
    }

    /**
     * email test not link to User page if the name is in email address
     */
    @Test
    public void linkToHTML() {
        if (Markdowns.MARKED_AVAILABLE) {
            String md = "test@test.com";
            String html = Markdowns.toHTML(md);

            Assert.assertEquals(html, "<p>test@test.com</p>");
        }
    }

    /**
     * Workaround for https://github.com/sirthias/pegdown/issues/229.
     */
    @Test
    public void toHTML1() {
        if (Markdowns.MARKED_AVAILABLE) {
            String md = "Sym** _Java_ ?**";
            String html = Markdowns.toHTML(md);
            Assert.assertEquals(html, "<p>Sym<strong> <em>Java</em> ?</strong></p>");

            md = "[link](https://github.com/b3log/symphony/blob/master/README_zh_CN.md)";
            html = Markdowns.toHTML(md);
            Assert.assertEquals(html,
                    "<p><a href=\"https://github.com/b3log/symphony/blob/master/README_zh_CN.md\">link</a></p>");

            md = "```\n" + "server {\n" + "    listen       443 ssl;\n" + "    server_name  usb.dev;\n" + "\n"
                    + "    access_log off;\n" + "\n" + "    ssl on;\n"
                    + "    ssl_certificate /etc/nginx/ssl/server.crt;\n"
                    + "    ssl_certificate_key /etc/nginx/ssl/server.key;\n"
                    + "    ssl_client_certificate /etc/nginx/ssl/ca.crt;\n" + "    ssl_verify_client on;\n" + "\n"
                    + "    location / {\n" + "        proxy_pass http://backend$request_uri;\n" + "    }\n" + "}\n"
                    + "```";
            html = Markdowns.toHTML(md);
            Assert.assertEquals(html,
                    "<p></p><pre><code>server {\n" + "    listen       443 ssl;\n" + "    server_name  usb.dev;\n"
                            + "\n" + "    access_log off;\n" + "\n" + "    ssl on;\n"
                            + "    ssl_certificate /etc/nginx/ssl/server.crt;\n"
                            + "    ssl_certificate_key /etc/nginx/ssl/server.key;\n"
                            + "    ssl_client_certificate /etc/nginx/ssl/ca.crt;\n" + "    ssl_verify_client on;\n"
                            + "\n" + "    location / {\n" + "        proxy_pass http://backend$request_uri;\n"
                            + "    }\n" + "}\n" + "</code></pre><p></p>");

            md = "?study_1?index.html,*??js?type*\n"
                    + "github?https://github.com/Userwu/study_react";
            html = Markdowns.toHTML(md);
            Assert.assertEquals(html,
                    "<p>? study_1 ? index.html ,<em>?? js ? type</em><br>github ?<a href=\"https://github.com/Userwu/study_react\">https://github.com/Userwu/study_react</a></p>");
        }
    }

    /**
     * Link test.
     */
    @Test
    public void toHTML() {
        if (Markdowns.MARKED_AVAILABLE) {
            String md = "[b3log](http://b3log.org)";
            String html = Markdowns.toHTML(md);
            Assert.assertTrue(html.contains("href"));

            md = "[b3log](b3log.org)";
            html = Markdowns.toHTML(md);
            Assert.assertTrue(html.contains("href"));
        }
    }

    /**
     * Standard syntax test.
     *
     * @throws java.lang.Exception exception
     */
    @Test
    public void toHtml0() throws Exception {
        if (Markdowns.MARKED_AVAILABLE) {
            final URL mdResource = MarkdownsTestCase.class.getResource("/markdown_syntax.text");
            final String md = IOUtils.toString(new FileReader(mdResource.getPath()));
            final String html = Markdowns.toHTML(md);

            //System.out.println(html);
        }
    }
}