    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    }