001 // Copyright 2004, 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.engine.encoders; 016 017 import static org.easymock.EasyMock.expect; 018 019 import org.apache.tapestry.BaseComponentTestCase; 020 import org.apache.tapestry.engine.ServiceEncoding; 021 import org.apache.tapestry.services.ServiceConstants; 022 import org.testng.annotations.Test; 023 024 /** 025 * Tests for {@link org.apache.tapestry.engine.encoders.PageServiceEncoder}. 026 * 027 * @author Howard M. Lewis Ship 028 * @since 4.0 029 */ 030 @Test 031 public class TestPageServiceEncoder extends BaseComponentTestCase 032 { 033 public void testEncodeOtherService() 034 { 035 ServiceEncoding e = newMock(ServiceEncoding.class); 036 037 expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("foo"); 038 039 replay(); 040 041 PageServiceEncoder encoder = new PageServiceEncoder(); 042 encoder.setServiceName("page"); 043 044 encoder.encode(e); 045 046 verify(); 047 } 048 049 public void testEncode() 050 { 051 ServiceEncoding e = newMock(ServiceEncoding.class); 052 053 expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("page"); 054 055 expect(e.getParameterValue(ServiceConstants.PAGE)).andReturn("Home"); 056 057 e.setServletPath("/Home.html"); 058 e.setParameterValue(ServiceConstants.SERVICE, null); 059 e.setParameterValue(ServiceConstants.PAGE, null); 060 061 replay(); 062 063 PageServiceEncoder encoder = new PageServiceEncoder(); 064 encoder.setServiceName("page"); 065 encoder.setExtension("html"); 066 067 encoder.encode(e); 068 069 verify(); 070 } 071 072 public void testEncodeHtm() 073 { 074 ServiceEncoding e = newMock(ServiceEncoding.class); 075 076 expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("page"); 077 078 expect(e.getParameterValue(ServiceConstants.PAGE)).andReturn("Home"); 079 080 e.setServletPath("/Home.htm"); 081 e.setParameterValue(ServiceConstants.SERVICE, null); 082 e.setParameterValue(ServiceConstants.PAGE, null); 083 084 replay(); 085 086 PageServiceEncoder encoder = new PageServiceEncoder(); 087 encoder.setServiceName("page"); 088 encoder.setExtension("htm"); 089 090 encoder.encode(e); 091 092 verify(); 093 } 094 095 public void testEncodeInNamespace() 096 { 097 ServiceEncoding e = newMock(ServiceEncoding.class); 098 099 expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("page"); 100 101 expect(e.getParameterValue(ServiceConstants.PAGE)).andReturn("contrib:Foo"); 102 103 replay(); 104 105 PageServiceEncoder encoder = new PageServiceEncoder(); 106 encoder.setServiceName("page"); 107 108 encoder.encode(e); 109 110 verify(); 111 } 112 113 public void testDecodeNoExtension() 114 { 115 ServiceEncoding e = newMock(ServiceEncoding.class); 116 117 expect(e.getServletPath()).andReturn("/app"); 118 119 replay(); 120 121 PageServiceEncoder encoder = new PageServiceEncoder(); 122 123 encoder.decode(e); 124 125 verify(); 126 } 127 128 public void testDecodeEndsWithDot() 129 { 130 ServiceEncoding e = newMock(ServiceEncoding.class); 131 132 expect(e.getServletPath()).andReturn("/ends.with.dot."); 133 134 replay(); 135 136 PageServiceEncoder encoder = new PageServiceEncoder(); 137 138 encoder.decode(e); 139 140 verify(); 141 } 142 143 public void testDecodeWrongExtension() 144 { 145 ServiceEncoding e = newMock(ServiceEncoding.class); 146 147 expect(e.getServletPath()).andReturn("/Home.direct"); 148 149 replay(); 150 151 PageServiceEncoder encoder = new PageServiceEncoder(); 152 153 encoder.decode(e); 154 155 verify(); 156 } 157 158 public void testDecodeSuccess() 159 { 160 ServiceEncoding e = newMock(ServiceEncoding.class); 161 162 expect(e.getServletPath()).andReturn("/Home.html"); 163 164 e.setParameterValue(ServiceConstants.SERVICE, "page"); 165 e.setParameterValue(ServiceConstants.PAGE, "Home"); 166 167 replay(); 168 169 PageServiceEncoder encoder = new PageServiceEncoder(); 170 encoder.setExtension("html"); 171 encoder.setServiceName("page"); 172 173 encoder.decode(e); 174 175 verify(); 176 } 177 178 public void testDecodeHtmSuccess() 179 { 180 ServiceEncoding e = newMock(ServiceEncoding.class); 181 182 expect(e.getServletPath()).andReturn("/Home.htm"); 183 184 e.setParameterValue(ServiceConstants.SERVICE, "page"); 185 e.setParameterValue(ServiceConstants.PAGE, "Home"); 186 187 replay(); 188 189 PageServiceEncoder encoder = new PageServiceEncoder(); 190 encoder.setExtension("htm"); 191 encoder.setServiceName("page"); 192 193 encoder.decode(e); 194 195 verify(); 196 } 197 }