// ======================================================================== // Copyright 2006 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ======================================================================== package org.mortbay.jetty.handler.rewrite; import java.io.IOException; import java.util.Enumeration; import org.mortbay.jetty.handler.rewrite.HeaderPatternRule; public class HeaderPatternRuleTest extends AbstractRuleTestCase { private HeaderPatternRule _rule; public void setUp() throws Exception { super.setUp(); _rule = new HeaderPatternRule(); _rule.setPattern("*"); } public void testHeaderWithTextValues() throws IOException { // different keys String headers[][] = { { "hnum#1", "test1" }, { "hnum#2", "2test2" }, { "hnum#3", "test3" } }; assertHeaders(headers); } public void testHeaderWithNumberValues() throws IOException { String headers[][] = { { "hello", "1" }, { "hello", "-1" }, { "hello", "100" }, { "hello", "100" }, { "hello", "100" }, { "hello", "100" }, { "hello", "100" }, { "hello1", "200" } }; assertHeaders(headers); } public void testHeaderOverwriteValues() throws IOException { String headers[][] = { { "size", "100" }, { "size", "200" }, { "size", "300" }, { "size", "400" }, { "size", "500" }, { "title", "abc" }, { "title", "bac" }, { "title", "cba" }, { "title1", "abba" }, { "title1", "abba1" }, { "title1", "abba" }, { "title1", "abba1" } }; assertHeaders(headers); Enumeration e = _response.getHeaders("size"); int count = 0; while (e.hasMoreElements()) { e.nextElement(); count++; } assertEquals(1, count); assertEquals("500", _response.getHeader("size")); assertEquals("cba", _response.getHeader("title")); assertEquals("abba1", _response.getHeader("title1")); } private void assertHeaders(String headers[][]) throws IOException { for (int i = 0; i < headers.length; i++) { _rule.setName(headers[i][0]); _rule.setValue(headers[i][1]); _rule.apply(null, _request, _response); assertEquals(headers[i][1], _response.getHeader(headers[i][0])); } } }