| package org.apache.turbine.util.uri; |
| |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| */ |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| import javax.servlet.http.Part; |
| |
| import org.apache.fulcrum.parser.DefaultParameterParser; |
| import org.apache.fulcrum.parser.ParameterParser; |
| import org.apache.fulcrum.parser.ParserService; |
| import org.apache.turbine.services.TurbineServices; |
| import org.apache.turbine.test.BaseTestCase; |
| import org.apache.turbine.util.ServerData; |
| import org.apache.turbine.util.TurbineConfig; |
| import org.junit.AfterClass; |
| import org.junit.Before; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.mockito.Mockito; |
| |
| /** |
| * Testing of the TurbineURI class |
| * |
| * @author <a href="mailto:quintonm@bellsouth.net">Quinton McCombs</a> |
| * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a> |
| * @version $Id$ |
| */ |
| public class TurbineURITest extends BaseTestCase |
| { |
| private TurbineURI turi; |
| |
| private ParserService parserService; |
| |
| private static TurbineConfig tc = null; |
| |
| |
| @BeforeClass |
| public static void init() { |
| tc = new TurbineConfig( |
| ".", |
| "/conf/test/CompleteTurbineResources.properties"); |
| tc.initialize(); |
| } |
| /** |
| * Performs any initialization that must happen before each test is run. |
| */ |
| |
| @Before |
| public void setup() |
| { |
| // Setup configuration |
| |
| ServerData sd = new ServerData("www.testserver.com", |
| URIConstants.HTTP_PORT, URIConstants.HTTP, "/servlet/turbine", |
| "/context"); |
| turi = new TurbineURI(sd); |
| |
| parserService = (ParserService)TurbineServices.getInstance().getService(ParserService.ROLE); |
| } |
| |
| /** |
| * Clean up after each test is run. |
| */ |
| @AfterClass |
| public static void tearDown() |
| { |
| if (tc != null) |
| { |
| tc.dispose(); |
| } |
| |
| } |
| |
| @Test public void testAddRemove() |
| { |
| |
| assertFalse("TurbineURI should not have a pathInfo", turi.hasPathInfo()); |
| assertFalse("TurbineURI must not have a queryData", turi.hasQueryData()); |
| turi.addPathInfo("test", "x"); |
| assertTrue("TurbineURI must have a pathInfo", turi.hasPathInfo()); |
| assertFalse("TurbineURI must not have a queryData", turi.hasQueryData()); |
| turi.removePathInfo("test"); |
| assertFalse("TurbineURI must not have a pathInfo", turi.hasPathInfo()); |
| assertFalse("TurbineURI must not have a queryData", turi.hasQueryData()); |
| |
| turi.addQueryData("test", "x"); |
| assertTrue("TurbineURI must have a queryData", turi.hasQueryData()); |
| assertFalse("TurbineURI must not have a pathInfo", turi.hasPathInfo()); |
| turi.removeQueryData("test"); |
| assertFalse("TurbineURI must not have a queryData", turi.hasQueryData()); |
| assertFalse("TurbineURI must not have a pathInfo", turi.hasPathInfo()); |
| } |
| |
| @Test public void testEmptyAndNullQueryData() |
| { |
| // Check empty String |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| turi.addQueryData("test", ""); |
| assertEquals("/context/servlet/turbine?test=", turi.getRelativeLink()); |
| turi.removeQueryData("test"); |
| |
| // Check null |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| turi.addQueryData("test", null); |
| assertEquals("/context/servlet/turbine?test=null", turi |
| .getRelativeLink()); |
| turi.removeQueryData("test"); |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| } |
| |
| @Test public void testEmptyAndNullPathInfo() |
| { |
| // Check empty String |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| turi.addPathInfo("test", ""); |
| // Kind of susspect result - might result in "//" in the URL. |
| assertEquals("/context/servlet/turbine/test/", turi.getRelativeLink()); |
| turi.removePathInfo("test"); |
| |
| // Check null |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| turi.addPathInfo("test", null); |
| assertEquals("/context/servlet/turbine/test/null", turi |
| .getRelativeLink()); |
| turi.removePathInfo("test"); |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| } |
| |
| @Test public void testAddEmptyParameterParser() |
| { |
| ParameterParser pp = new DefaultParameterParser(); |
| turi.add(1, pp); // 1 = query data |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| } |
| |
| @Test public void testAddParameterParser() throws InstantiationException |
| { |
| ParameterParser pp = parserService.getParser(DefaultParameterParser.class); |
| pp.add("test", ""); |
| turi.add(1, pp); // 1 = query data |
| assertEquals("/context/servlet/turbine?test=", turi.getRelativeLink()); |
| turi.removeQueryData("test"); |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| |
| parserService.putParser(pp); |
| pp = parserService.getParser(DefaultParameterParser.class); |
| pp.add("test", "null"); |
| // pp.add("test", (String) null); // isnotnull guarded |
| turi.add(1, pp); // 1 = query data |
| // Should make the following work so as to be consistent with directly |
| // added values. |
| assertEquals("/context/servlet/turbine?test=null", |
| turi.getRelativeLink()); |
| |
| turi.removeQueryData("test"); |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| |
| parserService.putParser(pp); |
| pp = parserService.getParser(DefaultParameterParser.class); |
| pp.add("test", "1"); |
| pp.add("test", "2"); |
| turi.add(1, pp); // 1 = query data |
| assertEquals("/context/servlet/turbine?test=1&test=2", turi.getRelativeLink()); |
| turi.removeQueryData("test"); |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| |
| parserService.putParser(pp); |
| pp = parserService.getParser(DefaultParameterParser.class); |
| Part part = Mockito.mock(Part.class); |
| pp.add("upload-field", part); |
| turi.add(1, pp); // 1 = query data |
| assertEquals("/context/servlet/turbine?upload-field=", turi.getRelativeLink()); |
| turi.removeQueryData("upload-field"); |
| assertEquals("/context/servlet/turbine", turi.getRelativeLink()); |
| } |
| |
| } |