📄 ruletest.java
字号:
condition.setType("port");
condition.setValue("90");
condition.setNext("or");
rule.addCondition(condition);
Condition condition2 = new Condition();
condition2.setType("port");
condition2.setValue("99");
rule.addCondition(condition2);
rule.initialise(null);
MockRequest request = new MockRequest("from");
request.setServerPort(88);
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertNull("should not be rewritten", rewrittenUrl);
request.setServerPort(90);
RewrittenUrl rewrittenUrl2 = rule.matches(request.getRequestURI(), request, response);
assertEquals("should not be rewritten", "to", rewrittenUrl2.getTarget());
request.setServerPort(99);
RewrittenUrl rewrittenUrl3 = rule.matches(request.getRequestURI(), request, response);
assertEquals("should not be rewritten", "to", rewrittenUrl3.getTarget());
}
public void testRuleConditionsAnd() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("from");
rule.setTo("to");
Condition condition = new Condition();
condition.setType("port");
condition.setValue("90");
rule.addCondition(condition);
Condition condition2 = new Condition();
condition2.setType("character-encoding");
condition2.setValue("utf8");
rule.addCondition(condition2);
rule.initialise(null);
MockRequest request = new MockRequest("from");
request.setServerPort(88);
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertNull("should not be rewritten", rewrittenUrl);
request.setServerPort(90);
RewrittenUrl rewrittenUrl2 = rule.matches(request.getRequestURI(), request, response);
assertNull("should not be rewritten", rewrittenUrl2);
request.setCharacterEncoding("utf8");
RewrittenUrl rewrittenUrl3 = rule.matches(request.getRequestURI(), request, response);
assertEquals("should be rewritten", "to", rewrittenUrl3.getTarget());
}
public void testRuleConditionsReplaceAll() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("-");
rule.setTo("_");
Condition condition = new Condition();
condition.setType("request-uri");
condition.setValue("/hi-something-to-to.html");
rule.addCondition(condition);
rule.initialise(null);
MockRequest request = new MockRequest("/hi-something-to-to.html");
request.setServerPort(88);
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertEquals("/hi_something_to_to.html", rewrittenUrl.getTarget());
}
public void testRuleBadRegex() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("fro[m");
rule.setTo("to");
rule.initialise(null);
MockRequest request = new MockRequest("from");
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertNull(rewrittenUrl);
}
public void testRuleCaseInsensitive() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("fRom");
rule.setTo("to");
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.matches(request.getRequestURI(), request, response);
assertEquals(rewrittenUrl.getTarget(), "to");
}
public void testRuleRewriteReq() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("from");
rule.setEncodeToUrl(true);
rule.setTo("to");
rule.setToType("permanent-redirect");
rule.initialise(null);
MockRequest request = new MockRequest("from");
NormalRewrittenUrl rewrittenUrl = (NormalRewrittenUrl) rule.matches(request.getRequestURI(), request, response);
assertTrue(rewrittenUrl.isEncode());
assertTrue(rewrittenUrl.isPermanentRedirect());
}
public void testRuleNoInit() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("from");
rule.setTo("to");
MockRequest request = new MockRequest("from");
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertNull(rewrittenUrl);
}
public void testRuleNotEnabled() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("from");
rule.setTo("to");
rule.setEnabled(false);
rule.initialise(null);
MockRequest request = new MockRequest("from");
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertNull(rewrittenUrl);
}
public void testRule02() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("/countries/([a-z]+)/");
rule.setTo("/countries/index.jsp?c=$1");
rule.setToType("redirect");
rule.initialise(null);
MockRequest request = new MockRequest("/countries/australia/");
NormalRewrittenUrl rewrittenUrl = (NormalRewrittenUrl) rule.matches(request.getRequestURI(), request, response);
MockRequest request2 = new MockRequest("/blah/");
NormalRewrittenUrl rewrittenUrl2 = (NormalRewrittenUrl) rule.matches(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, InvocationTargetException {
NormalRule rule = new NormalRule();
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.matches(request.getRequestURI(), request, response);
assertEquals("to", rewrittenUrl.getTarget());
}
public void testRuleErikBug() throws IOException, ServletException, InvocationTargetException {
// see http://www.erikisaksson.com/blog/2004/07/27/1090952764000.html
NormalRule rule = new NormalRule();
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.matches(request.getRequestURI(), request, response);
assertEquals("no rewriting should be necessary", null, rewrittenUrl);
request.addHeader("host", "www.notexample.com");
RewrittenUrl rewrittenUrl2 = rule.matches(request.getRequestURI(), request, response);
assertEquals("http://short.com/context/blahurl", rewrittenUrl2.getTarget());
}
public void testRule08() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("/$");
rule.setTo("/opencms/opencms/index.html");
rule.initialise(null);
MockRequest request = new MockRequest("/");
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertEquals("/opencms/opencms/index.html", rewrittenUrl.getTarget());
request = new MockRequest("/xyz");
rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertNull(rewrittenUrl);
}
public void testRuleTrailingSlashRedirect() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("/~quux/foo$");
rule.setTo("/~quux/foo/");
rule.initialise(null);
MockRequest request = new MockRequest("/~quux/foo");
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertEquals("/~quux/foo/", rewrittenUrl.getTarget());
}
public void testRule10() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("/products/([0-9]+)");
rule.setTo("/index.jsp?product_id=$1");
rule.initialise(null);
MockRequest request = new MockRequest("/products/105874");
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertEquals("/index.jsp?product_id=105874", rewrittenUrl.getTarget());
}
public void testRule11() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("^/([a-z]+)/$");
rule.setTo("/$1/index.jsp");
rule.initialise(null);
MockRequest request = new MockRequest("/dir/");
RewrittenUrl rewrittenUrl = rule.matches(request.getRequestURI(), request, response);
assertEquals("/dir/index.jsp", rewrittenUrl.getTarget());
}
public void testFailedRule1() throws IOException, ServletException, InvocationTargetException {
String uri = "/article/blah/";
NormalRule rule = new NormalRule();
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.matches(request.getRequestURI(), request, response);
assertNull(rewrittenUrl);
}
public void testRuleConditionsUserInRole() throws IOException, ServletException, InvocationTargetException {
NormalRule rule = new NormalRule();
rule.setFrom("from");
rule.setTo("to");
Condition condition = new Condition();
condition.setType("user-in-role");
condition.setValue("admin");
condition.setOperator("notequal");
rule.addCondition(condition);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -