📄 conditiontest.java
字号:
/**
* Copyright (c) 2005, Paul Tuckey
* All rights reserved.
*
* Each copy or derived work must preserve the copyright notice and this
* notice unmodified.
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
package org.tuckey.web.filters.urlrewrite;
import junit.framework.TestCase;
import org.tuckey.web.MockRequest;
import org.tuckey.web.filters.urlrewrite.utils.Log;
import javax.servlet.http.Cookie;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;
import java.util.Date;
/**
* @author Paul Tuckey
* @version $Revision: 1.11 $ $Date: 2005/12/07 10:22:10 $
*/
public class ConditionTest extends TestCase {
public void setUp() {
Log.setLevel("DEBUG");
}
public void testValue() {
Condition condition = new Condition();
condition.setValue("tEster");
assertEquals("tEster", condition.getValue());
}
public void testName() {
Condition condition = new Condition();
condition.setName("mename");
assertEquals("mename", condition.getName());
}
public void testType() {
typeSpecific("time");
typeSpecific("year");
typeSpecific("month");
typeSpecific("dayofmonth");
typeSpecific("dayofweek");
typeSpecific("ampm");
typeSpecific("hourofday");
typeSpecific("minute");
typeSpecific("second");
typeSpecific("millisecond");
typeSpecific("attribute");
typeSpecific("auth-type");
typeSpecific("character-encoding");
typeSpecific("content-length");
typeSpecific("content-type");
typeSpecific("context-path");
typeSpecific("cookie");
typeSpecific("header");
typeSpecific("method");
typeSpecific("parameter");
typeSpecific("path-info");
typeSpecific("path-translated");
typeSpecific("protocol");
typeSpecific("query-string");
typeSpecific("remote-addr");
typeSpecific("remote-host");
typeSpecific("remote-user");
typeSpecific("requested-session-id");
typeSpecific("request-uri");
typeSpecific("request-url");
typeSpecific("session-attribute");
typeSpecific("session-isnew");
typeSpecific("port");
typeSpecific("server-name");
typeSpecific("scheme");
typeSpecific("user-in-role");
}
public void typeSpecific(String type) {
Condition condition = new Condition();
condition.setType(type);
assertEquals(type, condition.getType());
// perform a weak test to check for null pointers etc
MockRequest request = new MockRequest();
condition.initialise();
condition.matches(request);
}
public void testCompileFailure() {
Condition condition = new Condition();
condition.setValue("aaa[");
assertFalse("regexp shouldn't compile", condition.initialise());
}
public void testOperator() {
Condition condition = new Condition();
condition.setOperator("");
assertEquals("equal", condition.getOperator());
}
public void testNext() {
Condition condition = new Condition();
condition.setNext("and");
assertEquals("and", condition.getNext());
Condition condition2 = new Condition();
condition2.setNext("badand");
assertFalse("must not init", condition.initialise());
Condition condition3 = new Condition();
condition3.setNext("or");
assertEquals("or", condition3.getNext());
assertTrue(condition3.isProcessNextOr());
}
public void testUnItied() {
Condition condition = new Condition();
assertFalse(condition.matches(new MockRequest()));
}
public void testCaseSensitive() {
Condition condition = new Condition();
condition.setType("header");
condition.setName("a");
condition.setValue("aaa");
condition.setCaseSensitive(true);
condition.initialise();
MockRequest request = new MockRequest();
request.setHeader("a", "aAa");
assertFalse(condition.matches(request));
request.setHeader("a", "aaa");
assertTrue(condition.matches(request));
assertTrue(condition.isCaseSensitive());
}
public void testInvalid() {
Condition condition = new Condition();
condition.setType("bogus");
condition.initialise();
assertFalse(condition.matches(new MockRequest()));
}
public void testId() {
Condition condition = new Condition();
condition.setId(98);
assertTrue(condition.getId() == 98);
}
public void testConditionOperator() {
MockRequest request = new MockRequest();
request.setServerPort(10);
Condition condition = new Condition();
condition.setType("port");
condition.setValue("9");
condition.setOperator("greater");
condition.initialise();
assertTrue("condition must match", condition.matches(request));
Condition condition2 = new Condition();
condition2.setType("port");
condition2.setValue("11");
condition2.setOperator("less");
condition2.initialise();
assertTrue("condition must match", condition2.matches(request));
Condition condition3 = new Condition();
condition3.setType("port");
condition3.setValue("10");
condition3.setOperator("greaterorequal");
condition3.initialise();
assertTrue("condition must match", condition3.matches(request));
Condition condition4 = new Condition();
condition4.setType("port");
condition4.setValue("10");
condition4.setOperator("lessorequal");
condition4.initialise();
assertTrue("condition must match", condition4.matches(request));
Condition condition5 = new Condition();
condition5.setType("port");
condition5.setValue("99");
condition5.setOperator("notequal");
condition5.initialise();
assertTrue("condition must match", condition5.matches(request));
Condition condition6 = new Condition();
condition6.setType("method");
condition6.setValue("POST");
condition6.setOperator("notequal");
condition6.initialise();
assertTrue("condition must match", condition6.matches(request));
Condition condition7 = new Condition();
condition7.setType("method");
condition7.setValue("POST");
condition7.setOperator("somebadassop");
assertFalse("condition must not init", condition7.initialise());
assertTrue("condition must have error", condition7.getError() != null);
}
public void testConditionTime() {
MockRequest request = new MockRequest();
long field = System.currentTimeMillis();
Condition condition = new Condition();
condition.setType("time");
condition.setValue("" + field);
condition.setOperator("greaterorequal");
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionYear() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.YEAR);
Condition condition = new Condition();
condition.setType("year");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionMonth() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.MONTH);
Condition condition = new Condition();
condition.setType("month");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionDayOfMonth() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.DAY_OF_MONTH);
Condition condition = new Condition();
condition.setType("dayofmonth");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionDayOfWeek() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.DAY_OF_WEEK);
Condition condition = new Condition();
condition.setType("dayofweek");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionAmPm() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.AM_PM);
Condition condition = new Condition();
condition.setType("ampm");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionHourOfDay() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.HOUR_OF_DAY);
Condition condition = new Condition();
condition.setType("hourofday");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionMinute() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.MINUTE);
Condition condition = new Condition();
condition.setType("minute");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionSecond() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.SECOND);
Condition condition = new Condition();
condition.setType("second");
condition.setValue("" + field);
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionMillisecond() {
MockRequest request = new MockRequest();
Calendar cal = Calendar.getInstance();
int field = cal.get(Calendar.MILLISECOND);
Condition condition = new Condition();
condition.setType("millisecond");
condition.setValue("" + field);
condition.setOperator("greaterorequal");
condition.initialise();
assertTrue("condition must match", condition.matches(request));
}
public void testConditionAttribute() {
MockRequest request = new MockRequest();
Condition condition = new Condition();
condition.setType("attribute");
condition.setName("ray");
condition.setValue("andchristian");
condition.initialise();
assertFalse("condition must not match", condition.matches(request));
request.setAttribute("ray", "andchristian");
assertTrue("condition must match", condition.matches(request));
Condition condition2 = new Condition();
condition2.setType("attribute");
condition2.setName("ray");
condition2.setValue("andbob");
condition2.initialise();
assertFalse("condition must not match", condition2.matches(request));
Condition condition3 = new Condition();
condition3.setType("attribute");
condition3.setValue("andbob");
condition3.initialise();
assertFalse("condition must not initialise", condition3.matches(request));
}
public void testConditionAuthType() {
MockRequest request = new MockRequest();
request.setAuthType("pwdwithcrapasrot13");
Condition condition = new Condition();
condition.setType("auth-type");
condition.setValue("pwd[a-z0-9]+");
condition.initialise();
assertTrue("condition must match", condition.matches(request));
Condition condition2 = new Condition();
condition2.setType("auth-type");
condition2.setValue("someotherpwdtype");
condition2.initialise();
assertFalse("condition must not match", condition2.matches(request));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -