001 // Copyright 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry.multipart; 016 017 import org.apache.tapestry.BaseComponentTestCase; 018 import static org.easymock.EasyMock.expect; 019 import org.testng.annotations.Test; 020 021 import javax.servlet.http.HttpServletRequest; 022 import java.util.Enumeration; 023 import java.util.HashMap; 024 import java.util.Map; 025 026 /** 027 * Tests for {@link org.apache.tapestry.multipart.UploadFormParametersWrapper}. 028 * 029 * @author Howard M. Lewis Ship 030 * @since 4.0 031 */ 032 @Test 033 public class TestUploadFormParametersWrapper extends BaseComponentTestCase 034 { 035 private HttpServletRequest newHttpRequest() 036 { 037 HttpServletRequest req = newMock(HttpServletRequest.class); 038 expect(req.getParameterMap()).andReturn( new HashMap() ).anyTimes(); 039 return req; 040 } 041 042 public void testMapIsNotModifiable() 043 { 044 HttpServletRequest request = newHttpRequest(); 045 046 replay(); 047 048 Map map = new HashMap(); 049 050 map.put("key", new String[] { "value" }); 051 052 HttpServletRequest r = new UploadFormParametersWrapper(request, map); 053 054 Map pmap = r.getParameterMap(); 055 056 assertNotSame(map, pmap); 057 058 assertSame(map.get("key"), pmap.get("key")); 059 060 try 061 { 062 pmap.put("foo", "bar"); 063 unreachable(); 064 } 065 catch (UnsupportedOperationException ex) 066 { 067 // Expected. 068 } 069 070 verify(); 071 } 072 073 public void testGetSingleParameterWhenNull() 074 { 075 HttpServletRequest request = newHttpRequest(); 076 077 replay(); 078 079 HttpServletRequest r = new UploadFormParametersWrapper(request, new HashMap()); 080 081 assertNull(r.getParameter("unknown-key")); 082 083 verify(); 084 } 085 086 public void testGetSingleParameterWhenEmptyArray() 087 { 088 HttpServletRequest request = newHttpRequest(); 089 090 replay(); 091 092 HashMap params = new HashMap(); 093 094 params.put("empty-key", new String[0]); 095 096 HttpServletRequest r = new UploadFormParametersWrapper(request, params); 097 098 assertNull(r.getParameter("empty-key")); 099 100 verify(); 101 } 102 103 public void testGetParameterValues() 104 { 105 String[] values = 106 { "fred", "barney" }; 107 108 HttpServletRequest request = newHttpRequest(); 109 110 replay(); 111 112 HashMap params = new HashMap(); 113 114 params.put("key", values); 115 116 HttpServletRequest r = new UploadFormParametersWrapper(request, params); 117 118 assertSame(values, r.getParameterValues("key")); 119 120 verify(); 121 } 122 123 public void testGetParameterNames() 124 { 125 HttpServletRequest request = newHttpRequest(); 126 127 replay(); 128 129 HashMap params = new HashMap(); 130 131 params.put("key", new String[0]); 132 133 HttpServletRequest r = new UploadFormParametersWrapper(request, params); 134 135 Enumeration e = r.getParameterNames(); 136 137 assertEquals(true, e.hasMoreElements()); 138 assertEquals("key", e.nextElement()); 139 assertEquals(false, e.hasMoreElements()); 140 141 verify(); 142 } 143 144 public void testGetUrlParameter() // Test fix for TAPESTRY-340 145 { 146 HttpServletRequest req = newMock(HttpServletRequest.class); 147 expect(req.getParameterMap()).andReturn(new HashMap(){{put("urlParam", new String[]{"urlParamValue"} );}} ).anyTimes(); 148 149 replay(); 150 151 HttpServletRequest r = new UploadFormParametersWrapper(req, new HashMap()); 152 153 assertEquals("urlParamValue", r.getParameter("urlParam") ); 154 assertEquals("urlParam", r.getParameterNames().nextElement() ); 155 } 156 }