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.portlet; 016 017 import static org.easymock.EasyMock.expect; 018 019 import java.util.List; 020 021 import org.apache.tapestry.web.WebRequest; 022 import org.apache.tapestry.web.WebSession; 023 import org.testng.annotations.Test; 024 025 import javax.portlet.PortletRequest; 026 import javax.portlet.PortletSession; 027 028 /** 029 * Tests for {@link PortletWebRequest}. 030 * 031 * @author Howard M. Lewis Ship 032 * @since 4.0 033 */ 034 @Test 035 public class TestPortletWebRequest extends BasePortletWebTestCase 036 { 037 private PortletRequest newPortletRequest() 038 { 039 return newMock(PortletRequest.class); 040 } 041 042 public void testGetParameterNames() 043 { 044 PortletRequest request = newPortletRequest(); 045 046 expect(request.getParameterNames()).andReturn(newEnumeration()); 047 048 replay(); 049 050 WebRequest wr = new PortletWebRequest(request); 051 052 List l = wr.getParameterNames(); 053 054 checkList(l); 055 056 verify(); 057 } 058 059 public void testGetParameterValue() 060 { 061 String value = "William Orbit"; 062 063 PortletRequest request = newPortletRequest(); 064 065 expect(request.getParameter("artist")).andReturn(value); 066 067 replay(); 068 069 WebRequest wr = new PortletWebRequest(request); 070 071 assertSame(value, wr.getParameterValue("artist")); 072 073 verify(); 074 } 075 076 public void testGetParameterValues() 077 { 078 String[] values = { "William Orbit", "Steely Dan" }; 079 080 PortletRequest request = newPortletRequest(); 081 082 expect(request.getParameterValues("artist")).andReturn(values); 083 084 replay(); 085 086 WebRequest wr = new PortletWebRequest(request); 087 088 assertSame(values, wr.getParameterValues("artist")); 089 090 verify(); 091 } 092 093 public void testGetContextPath() 094 { 095 PortletRequest request = newPortletRequest(); 096 097 expect(request.getContextPath()).andReturn("/foo"); 098 099 replay(); 100 101 WebRequest wr = new PortletWebRequest(request); 102 103 assertEquals("/foo", wr.getContextPath()); 104 105 verify(); 106 } 107 108 public void testGetAttributeNames() 109 { 110 PortletRequest request = newPortletRequest(); 111 112 expect(request.getAttributeNames()).andReturn(newEnumeration()); 113 114 replay(); 115 116 WebRequest wr = new PortletWebRequest(request); 117 118 List l = wr.getAttributeNames(); 119 120 checkList(l); 121 122 verify(); 123 } 124 125 public void testGetAttribute() 126 { 127 Object attribute = new Object(); 128 PortletRequest request = newPortletRequest(); 129 130 expect(request.getAttribute("attr")).andReturn(attribute); 131 132 replay(); 133 134 WebRequest wr = new PortletWebRequest(request); 135 136 assertSame(attribute, wr.getAttribute("attr")); 137 138 verify(); 139 } 140 141 public void testSetAttribute() 142 { 143 Object attribute = new Object(); 144 145 PortletRequest request = newPortletRequest(); 146 147 request.setAttribute("name", attribute); 148 149 replay(); 150 151 WebRequest wr = new PortletWebRequest(request); 152 153 wr.setAttribute("name", attribute); 154 155 verify(); 156 } 157 158 public void testSetAttributeToNull() 159 { 160 PortletRequest request = newPortletRequest(); 161 162 request.removeAttribute("tonull"); 163 164 replay(); 165 166 WebRequest wr = new PortletWebRequest(request); 167 168 wr.setAttribute("tonull", null); 169 170 verify(); 171 } 172 173 public void testGetSession() 174 { 175 PortletRequest request = newPortletRequest(); 176 177 PortletSession session = newMock(PortletSession.class); 178 179 expect(request.getPortletSession(false)).andReturn(null); 180 181 // Get it, doesn't exist, wreate false 182 183 replay(); 184 185 WebRequest wr = new PortletWebRequest(request); 186 187 assertNull(wr.getSession(false)); 188 189 verify(); 190 191 expect(request.getPortletSession(true)).andReturn(session); 192 193 // #2: Get it, wreate is true, it is wreated. 194 195 replay(); 196 197 WebSession cs = wr.getSession(true); 198 199 verify(); 200 201 // #3: Cached in local variable, make sure same 202 // think returned. 203 204 replay(); 205 206 assertSame(cs, wr.getSession(false)); 207 208 verify(); 209 } 210 211 public void testGetScheme() 212 { 213 PortletRequest request = newPortletRequest(); 214 215 expect(request.getScheme()).andReturn("http"); 216 217 replay(); 218 219 WebRequest wr = new PortletWebRequest(request); 220 221 assertEquals("http", wr.getScheme()); 222 223 verify(); 224 } 225 226 public void testGetServerName() 227 { 228 PortletRequest request = newPortletRequest(); 229 230 expect(request.getServerName()).andReturn("www.myhost.com"); 231 232 replay(); 233 234 WebRequest wr = new PortletWebRequest(request); 235 236 assertEquals("www.myhost.com", wr.getServerName()); 237 238 verify(); 239 } 240 241 public void testGetServerPort() 242 { 243 PortletRequest request = newPortletRequest(); 244 245 expect(request.getServerPort()).andReturn(80); 246 247 replay(); 248 249 WebRequest wr = new PortletWebRequest(request); 250 251 assertEquals(80, wr.getServerPort()); 252 253 verify(); 254 } 255 256 public void testGetRequestURIUnsupported() 257 { 258 PortletRequest request = newPortletRequest(); 259 260 replay(); 261 262 WebRequest wr = new PortletWebRequest(request); 263 264 assertEquals("<PortletRequest>", wr.getRequestURI()); 265 266 verify(); 267 } 268 269 public void testForwardUnsupported() 270 { 271 PortletRequest request = newPortletRequest(); 272 273 replay(); 274 275 WebRequest wr = new PortletWebRequest(request); 276 277 try 278 { 279 wr.forward(null); 280 unreachable(); 281 } 282 catch (UnsupportedOperationException ex) 283 { 284 // Expected. 285 } 286 287 verify(); 288 } 289 290 public void testGetPathInfo() 291 { 292 PortletRequest request = newPortletRequest(); 293 294 replay(); 295 296 WebRequest wr = new PortletWebRequest(request); 297 298 assertNull(wr.getPathInfo()); 299 300 verify(); 301 } 302 }