<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id$ -->
<!--
   Copyright 2004 The Apache Software Foundation
  
   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.
-->

<!-- Tests IPage.validate(), PageRedirectException and PageCallback -->

<mock-test>
    <context name="mock"/>
    
    <servlet name="app" class="org.apache.tapestry.ApplicationServlet">
  		<init-parameter
  			name="org.apache.tapestry.application-specification"
  			value="/org/apache/tapestry/junit/mock/app/Mock.application"/>
  	</servlet> 
  	  	
	<request>
  		<parameter name="service" value="page/Protected"/>
  		
  		
  		<assert-output name="Title">
<![CDATA[
<title>Guard</title>
]]>
		</assert-output>
		
		<assert-output name="Link URL">
<![CDATA[
href="/mock/app?service=direct/1/Guard/link"
]]>
		</assert-output>
		
		<assert-output name="Callback">
<![CDATA[
Callback: PageCallback[Protected]
]]>		
		</assert-output>		
  	</request>
  	
  	<!-- Simulate clicking the link, which should send the
  	     user to the Protected page.  -->
  	     
  	<request>
  		<parameter name="service" value="direct/1/Guard/link"/>
  		
  		<assert-output name="Title">
<![CDATA[
<title>Protected</title>
]]>
		</assert-output>
		
	</request>
	

	<!-- Now, try the original request again, now that the Guard
		 page has had its say. -->

	<request>
  		<parameter name="service" value="page/Protected"/>
  		
  		<assert-output name="Title">
<![CDATA[
<title>Protected</title>
]]>
		</assert-output>
				
	</request>
	  	
</mock-test>