<?xml version="1.0" encoding="UTF-8"?>
<!-- 
   Copyright 2004, 2005 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.
-->

<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" />
      <parameter name="page" value="Protected" />
  		
  		
  		<assert-output name="Title">
<![CDATA[
<title>Guard</title>
]]>
		</assert-output>
		
		<assert-output name="Link URL">
<![CDATA[
href="/mock/app?component=link&amp;page=Guard&amp;service=direct&amp;session=T"
]]>
		</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" />
      <parameter name="session" value="T" />
      <parameter name="page" value="Guard" />
      <parameter name="component" value="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" />
      <parameter name="page" value="Protected" />
  		
  		<assert-output name="Title">
<![CDATA[
<title>Protected</title>
]]>
		</assert-output>
				
	</request>
	  	
</mock-test>