⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ruletest.java

📁 jsp中 urlRewrite的源代码 很有用的喔
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        Condition condition = new Condition();
        condition.setName("agent");
        condition.setValue("aAa");
        rule.addCondition(condition);
        rule.initialise(null);
        MockRequest request = new MockRequest("from");
        request.addHeader("agent", "aaa");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals(rewrittenUrl.getTarget(), "to");
    }

    public void testRuleRewriteReq() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("from");
        rule.setEncodeToUrl(true);
        rule.setTo("to");
        rule.setToType("permanent-redirect");
        rule.initialise(null);
        MockRequest request = new MockRequest("from");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertTrue(rewrittenUrl.isEncode());
        assertTrue(rewrittenUrl.isPermanentRedirect());
    }

    public void testRuleNoInit() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("from");
        rule.setTo("to");
        MockRequest request = new MockRequest("from");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertNull(rewrittenUrl);
    }

    public void testRuleNotEnabled() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("from");
        rule.setTo("to");
        rule.setEnabled(false);
        rule.initialise(null);
        MockRequest request = new MockRequest("from");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertNull(rewrittenUrl);
    }

    public void testRule02() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("/countries/([a-z]+)/");
        rule.setTo("/countries/index.jsp?c=$1");
        rule.setToType("redirect");
        rule.initialise(null);

        MockRequest request = new MockRequest("/countries/australia/");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        MockRequest request2 = new MockRequest("/blah/");
        RewrittenUrl rewrittenUrl2 = rule.execute(request2.getRequestURI(), request2, response);

        assertEquals("/countries/index.jsp?c=australia", rewrittenUrl.getTarget());
        assertEquals("redirect", rule.getToType());
        assertTrue(rewrittenUrl.isRedirect());
        assertNull("Rule should not match", rewrittenUrl2);
    }


    public void testRuleCondition() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("from");
        rule.setTo("to");
        Condition condition = new Condition();
        condition.setType("port");
        condition.setValue("5050");
        rule.addCondition(condition);
        rule.initialise(null);
        MockRequest request = new MockRequest("from");
        request.setServerPort(5050);
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("to", rewrittenUrl.getTarget());
    }

    public void testRuleErikBug() throws IOException, ServletException {
        // see http://www.erikisaksson.com/blog/2004/07/27/1090952764000.html
        Rule rule = new Rule();
        rule.setFrom("^(.*)$");
        rule.setTo("http://short.com/context$1");
        Condition condition = new Condition();
        condition.setName("host");
        condition.setOperator("notequal");
        condition.setValue("short\\.com");
        rule.addCondition(condition);
        rule.initialise(null);
        MockRequest request = new MockRequest("/blahurl");
        request.addHeader("host", "short.com");

        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("no rewriting should be necessary", null, rewrittenUrl);

        request.addHeader("host", "www.notexample.com");
        RewrittenUrl rewrittenUrl2 = rule.execute(request.getRequestURI(), request, response);
        assertEquals("http://short.com/context/blahurl", rewrittenUrl2.getTarget());
    }


    public void testRule08() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("/$");
        rule.setTo("/opencms/opencms/index.html");
        rule.initialise(null);

        MockRequest request = new MockRequest("/");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("/opencms/opencms/index.html", rewrittenUrl.getTarget());

        request = new MockRequest("/xyz");
        rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertNull(rewrittenUrl);
    }


    public void testRuleTrailingSlashRedirect() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("/~quux/foo$");
        rule.setTo("/~quux/foo/");
        rule.initialise(null);

        MockRequest request = new MockRequest("/~quux/foo");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("/~quux/foo/", rewrittenUrl.getTarget());
    }

    public void testRule10() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("/products/([0-9]+)");
        rule.setTo("/index.jsp?product_id=$1");
        rule.initialise(null);
        MockRequest request = new MockRequest("/products/105874");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("/index.jsp?product_id=105874", rewrittenUrl.getTarget());
    }


    public void testRule11() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("^/([a-z]+)/$");
        rule.setTo("/$1/index.jsp");
        rule.initialise(null);
        MockRequest request = new MockRequest("/dir/");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("/dir/index.jsp", rewrittenUrl.getTarget());
    }


    public void testFailedRule1() throws IOException, ServletException {
        String uri = "/article/blah/";
        Rule rule = new Rule();
        rule.setFrom("/article/([0-9]+)/([0-9]+)/([0-9]+)/([a-zA-Z0-9]+)/");
        rule.setTo("/article/index.jsp?year=$1&month=$2&day=$3&code=$4");
        rule.initialise(null);

        MockRequest request = new MockRequest(uri);
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertNull(rewrittenUrl);
    }


    public void testRuleConditionsUserInRole() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("from");
        rule.setTo("to");

        Condition condition = new Condition();
        condition.setType("user-in-role");
        condition.setValue("admin");
        condition.setOperator("notequal");
        rule.addCondition(condition);

        Condition condition2 = new Condition();
        condition2.setType("user-in-role");
        condition2.setValue("boss");
        condition2.setOperator("notequal");
        rule.addCondition(condition2);
        rule.initialise(null);

        MockRequest request = new MockRequest("from");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("should be rewritten", "to", rewrittenUrl.getTarget());

        request.addRole("boss");
        RewrittenUrl rewrittenUrl2 = rule.execute(request.getRequestURI(), request, response);
        assertNull("should not be rewritten", rewrittenUrl2);
    }

    /**
     * <rule>
     * <name>Bild redirect test</name>
     * <from>logo.gif</from>
     * <to type="permanent-redirect">http://de010009.de.ina.com:8080/urlrewrite/artifact_type.gif</to>
     * </rule>
     */
    public void testBlindRedirect() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("^/logo\\.gif$");
        rule.setToType("permanent-redirect");
        rule.setTo("http://de010009\\.de\\.ina\\.com:8080/urlrewrite/artifact_type\\.gif");
        rule.initialise(null);
        MockRequest request = new MockRequest("/logo.gif");
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals("http://de010009.de.ina.com:8080/urlrewrite/artifact_type.gif", rewrittenUrl.getTarget());
        assertTrue(rewrittenUrl.isPermanentRedirect());
        assertFalse(rewrittenUrl.isEncode());
    }


    public void testRuleHighChar() throws IOException, ServletException {
        Rule rule = new Rule();
        rule.setFrom("/aa\\?a=(.*)");
        rule.setEncodeToUrl(true);
        rule.setTo("$1");
        rule.setToType("permanent-redirect");
        rule.initialise(null);
        String highStr = new String("\u00F6\u236a\u2E88".getBytes(), "UTF8");
        MockRequest request = new MockRequest("/aa?a=" + highStr);
        RewrittenUrl rewrittenUrl = rule.execute(request.getRequestURI(), request, response);
        assertEquals(highStr, rewrittenUrl.getTarget());
    }

    /**
     * <rule>
     * <condition type="cookie" name="SAJKLHDSKJHDSKJHD" />
     * <from>/a\.jsp</from>
     * <to>/b.jsp</to>
     * </rule>
     * <p/>
     * (Which I think it means: "if the user asks for a.jsp and the cookie
     * SAJKLHDSKJHDSKJHD is not set, redirect him to b.jsp") the rule stops
     * working. Maybe it's because the cookie is null instead of an empty
     * string, I don't know.
     */
    public void testRuleCookieEmpty() throws IOException, ServletException {
        Condition c = new Condition();
        c.setType("cookie");
        c.setName("abcdef");
        Rule rule = new Rule();
        rule.setFrom("/a\\.jsp");
        rule.setTo("/b.jsp");
        rule.addCondition(c);
        rule.initialise(null);
        RewrittenUrl rewrittenUrl = rule.execute("/a.jsp", request, response);
        assertTrue(request.getCookies() == null);
        assertTrue(rewrittenUrl == null);

        c = new Condition();
        c.setType("cookie");
        c.setName("abcdef");
        c.setOperator("notequal");
        rule = new Rule();
        rule.setFrom("/a\\.jsp");
        rule.setTo("/b.jsp");
        rule.addCondition(c);
        rule.initialise(null);
        rewrittenUrl = rule.execute("/a.jsp", request, response);
        assertTrue(request.getCookies() == null);
        assertEquals("/b.jsp", rewrittenUrl.getTarget());

    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -