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

📄 conditiontest.java

📁 UrlRewriteFilter 是一个不错的URL转换工具
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/**
 * 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 + -