📄 ruletest.java
字号:
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 + -