<?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.
-->
<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/PrivateAssetTemplate"/>
		
		<assert-output name="Page Title">
<![CDATA[		
<title>Private Asset Template</title>
]]>
		</assert-output>
		
		<assert-output name="Page Content">
<![CDATA[		
This page's content comes from a private asset
]]>
		</assert-output>
		
	</request>
	
	<request>
	  	<parameter name="service" value="page/ContextAssetTemplate"/>
		
		<assert-output name="Page Title">
<![CDATA[		
<title>Context Asset Template</title>
]]>
		</assert-output>
		
		<assert-output name="Page Content">
<![CDATA[		
This page's content comes from a context asset
]]>
		</assert-output>
		
	</request>	
	
</mock-test>
    	
