001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 020 package org.apache.turbine.modules; 021 022 import java.util.Vector; 023 024 import javax.servlet.ServletConfig; 025 import javax.servlet.http.HttpServletResponse; 026 027 import junit.framework.Assert; 028 029 import org.apache.turbine.modules.layouts.TestVelocityOnlyLayout; 030 import org.apache.turbine.om.security.User; 031 import org.apache.turbine.pipeline.PipelineData; 032 import org.apache.turbine.services.template.TemplateService; 033 import org.apache.turbine.test.BaseTestCase; 034 import org.apache.turbine.test.EnhancedMockHttpServletRequest; 035 import org.apache.turbine.test.EnhancedMockHttpSession; 036 import org.apache.turbine.util.RunData; 037 import org.apache.turbine.util.TurbineConfig; 038 039 import com.mockobjects.servlet.MockHttpServletResponse; 040 import com.mockobjects.servlet.MockServletConfig; 041 042 043 /** 044 * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a> 045 */ 046 public class LayoutLoaderTest extends BaseTestCase { 047 private static TurbineConfig tc = null; 048 private static TemplateService ts = null; 049 private MockServletConfig config = null; 050 private EnhancedMockHttpServletRequest request = null; 051 private EnhancedMockHttpSession session = null; 052 private HttpServletResponse response = null; 053 private static ServletConfig sc = null; 054 /* 055 * @see TestCase#setUp() 056 */ 057 protected void setUp() throws Exception { 058 super.setUp(); 059 config = new MockServletConfig(); 060 config.setupNoParameters(); 061 request = new EnhancedMockHttpServletRequest(); 062 request.setupServerName("bob"); 063 request.setupGetProtocol("http"); 064 request.setupScheme("scheme"); 065 request.setupPathInfo("damn"); 066 request.setupGetServletPath("damn2"); 067 request.setupGetContextPath("wow"); 068 request.setupGetContentType("html/text"); 069 request.setupAddHeader("Content-type", "html/text"); 070 request.setupAddHeader("Accept-Language", "en-US"); 071 Vector v = new Vector(); 072 request.setupGetParameterNames(v.elements()); 073 session = new EnhancedMockHttpSession(); 074 response = new MockHttpServletResponse(); 075 session.setupGetAttribute(User.SESSION_KEY, null); 076 request.setSession(session); 077 sc = config; 078 tc = 079 new TurbineConfig( 080 ".", 081 "/conf/test/CompleteTurbineResources.properties"); 082 tc.initialize(); 083 } 084 /* 085 * @see TestCase#tearDown() 086 */ 087 protected void tearDown() throws Exception { 088 super.tearDown(); 089 if (tc != null) { 090 tc.dispose(); 091 } 092 } 093 /** 094 * Constructor for LayoutLoaderTest. 095 * @param arg0 096 */ 097 public LayoutLoaderTest(String arg0) throws Exception { 098 super(arg0); 099 } 100 101 public void testPipelineDataContainsRunData() 102 { 103 try 104 { 105 RunData data = getRunData(request,response,config); 106 PipelineData pipelineData = data; 107 data.setLayout("TestVelocityOnlyLayout"); 108 int numberOfCalls = TestVelocityOnlyLayout.numberOfCalls; 109 try { 110 LayoutLoader.getInstance().exec(pipelineData, data.getLayout()); 111 } catch (Exception e) { 112 e.printStackTrace(); 113 Assert.fail("Should not have thrown an exception."); 114 } 115 assertEquals(numberOfCalls+1,TestVelocityOnlyLayout.numberOfCalls); 116 } 117 catch (Exception e) 118 { 119 e.printStackTrace(); 120 Assert.fail("Should not have thrown an exception."); 121 } 122 } 123 124 public void testDoBuildWithRunData() 125 { 126 try 127 { 128 RunData data = getRunData(request,response,config); 129 data.setLayout("TestVelocityOnlyLayout"); 130 int numberOfCalls = TestVelocityOnlyLayout.numberOfCalls; 131 try { 132 LayoutLoader.getInstance().exec(data, data.getLayout()); 133 } catch (Exception e) { 134 e.printStackTrace(); 135 Assert.fail("Should not have thrown an exception."); 136 } 137 assertEquals(numberOfCalls+1,TestVelocityOnlyLayout.numberOfCalls); 138 } 139 catch (Exception e) 140 { 141 e.printStackTrace(); 142 Assert.fail("Should not have thrown an exception."); 143 } 144 } 145 146 147 }