📄 conditiontest.java
字号:
/**
* Copyright (c) 2005-2007, Paul Tuckey
* All rights reserved.
* ====================================================================
* Licensed under the BSD License. Text as follows.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* - Neither the name tuckey.org nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*/
package org.tuckey.web.filters.urlrewrite;
import junit.framework.TestCase;
import org.tuckey.web.testhelper.MockRequest;
import org.tuckey.web.filters.urlrewrite.utils.Log;
import javax.servlet.http.Cookie;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;
/**
* @author Paul Tuckey
* @version $Revision: 1 $ $Date: 2006-08-01 21:40:28 +1200 (Tue, 01 Aug 2006) $
*/
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.getConditionMatch(request);
}
public void testCompileFailure() {
Condition condition = new Condition();
condition.setValue("aaa[");
assertFalse("regex 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();
assertNull(condition.getConditionMatch(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");
assertNull(condition.getConditionMatch(request));
request.setHeader("a", "aaa");
assertNotNull(condition.getConditionMatch(request));
assertTrue(condition.isCaseSensitive());
}
public void testInvalid() {
Condition condition = new Condition();
condition.setType("bogus");
condition.initialise();
assertNull(condition.getConditionMatch(new MockRequest()));
}
public void testInstanceOf() {
Condition condition = new Condition();
condition.setType("attribute");
condition.setOperator("instanceof");
condition.setName("obj");
condition.setValue("org.tuckey.web.filters.urlrewrite.ConditionTest");
condition.initialise();
MockRequest req = new MockRequest();
req.setAttribute("obj", this);
assertNotNull(condition.getConditionMatch(req));
req.setAttribute("obj", new ConditionTestExtended());
assertNotNull("subclasses should match", condition.getConditionMatch(req));
}
class ConditionTestExtended extends ConditionTest {
// nothing
}
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();
assertNotNull("condition must match", condition.getConditionMatch(request));
Condition condition2 = new Condition();
condition2.setType("port");
condition2.setValue("11");
condition2.setOperator("less");
condition2.initialise();
assertNotNull("condition must match", condition2.getConditionMatch(request));
Condition condition3 = new Condition();
condition3.setType("port");
condition3.setValue("10");
condition3.setOperator("greaterorequal");
condition3.initialise();
assertNotNull("condition must match", condition3.getConditionMatch(request));
Condition condition4 = new Condition();
condition4.setType("port");
condition4.setValue("10");
condition4.setOperator("lessorequal");
condition4.initialise();
assertNotNull("condition must match", condition4.getConditionMatch(request));
Condition condition5 = new Condition();
condition5.setType("port");
condition5.setValue("99");
condition5.setOperator("notequal");
condition5.initialise();
assertNotNull("condition must match", condition5.getConditionMatch(request));
Condition condition6 = new Condition();
condition6.setType("method");
condition6.setValue("POST");
condition6.setOperator("notequal");
condition6.initialise();
assertNotNull("condition must match", condition6.getConditionMatch(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();
assertNotNull("condition must match", condition.getConditionMatch(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();
assertNotNull("condition must match", condition.getConditionMatch(request));
}
public void testConditionMonth() {
MockRequest request = new MockRequest();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -