    1   /*
    2    * $Id: $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21  package org.apache.struts.taglib;
    22
    23  import junit.framework.TestCase;
    24
    25  import org.apache.struts.Globals;
    26  import org.apache.struts.config.ForwardConfig;
    27  import org.apache.struts.config.ModuleConfig;
    28  import org.apache.struts.config.impl.ModuleConfigImpl;
    29  import org.apache.struts.mock.MockHttpServletRequest;
    30  import org.apache.struts.mock.MockHttpServletResponse;
    31  import org.apache.struts.mock.MockHttpSession;
    32  import org.apache.struts.mock.MockPageContext;
    33  import org.apache.struts.mock.MockServletConfig;
    34  import org.apache.struts.mock.MockServletContext;
    35  import org.apache.struts.util.MessageResources;
    36  import org.apache.struts.util.MessageResourcesFactory;
    37  import org.apache.struts.util.PropertyMessageResources;
    38
    39  public class TagTestBase extends TestCase {
    40      protected TagUtils tagutils = TagUtils.getInstance();
    41      protected MockServletConfig servletConfig;
    42      protected MockServletContext servletContext;
    43      protected MockHttpServletRequest request;
    44      protected MockPageContext pageContext;
    45      protected ModuleConfig moduleConfig;
    46      protected ModuleConfig moduleConfig2;
    47      protected ModuleConfig moduleConfig3;
    48
    49      public TagTestBase() {
    50          super();
    51      }
    52
    53      public TagTestBase(String theName) {
    54          super(theName);
    55      }
    56
    57      /**
    58       * Helper method that creates/configures a basic configuration of Mock
    59       * Objects.
    60       *
    61       *
    62       * PageContext ServletConfig ServletContext HttpServletRequest HttpSession
    63       * HttpServletResponse
    64       *
    65       * "/myapp", "/foo", null, null,
    66       */
    67      public void setUp() {
    68          // -- default Module
    69          this.moduleConfig = new ModuleConfigImpl("");
    70          this.moduleConfig.addForwardConfig(new ForwardConfig("foo", "/bar.jsp",
    71                  false));
    72          this.moduleConfig.addForwardConfig(new ForwardConfig("relative1",
    73                  "relative.jsp", false));
    74          this.moduleConfig.addForwardConfig(new ForwardConfig("relative2",
    75                  "relative.jsp", false));
    76          this.moduleConfig.addForwardConfig(new ForwardConfig("external",
    77                  "http://struts.apache.org/", false));
    78
    79          // -- module "/2"
    80          this.moduleConfig2 = new ModuleConfigImpl("/2");
    81          this.moduleConfig2.addForwardConfig(new ForwardConfig("foo",
    82                  "/baz.jsp", false));
    83          this.moduleConfig2.addForwardConfig(new ForwardConfig("relative1",
    84                  "relative.jsp", false));
    85          this.moduleConfig2.addForwardConfig(new ForwardConfig("relative2",
    86                  "relative.jsp", false));
    87          this.moduleConfig2.addForwardConfig(new ForwardConfig("external",
    88                  "http://struts.apache.org/", false));
    89
    90          // -- module "/3"
    91          this.moduleConfig3 = new ModuleConfigImpl("/3");
    92
    93          // -- configure the ServletContext
    94          this.servletContext = new MockServletContext();
    95          this.servletContext.setAttribute(Globals.MODULE_KEY, moduleConfig);
    96          this.servletContext.setAttribute(Globals.MODULE_KEY + "/2",
    97              moduleConfig2);
    98          this.servletContext.setAttribute(Globals.MODULE_KEY + "/3",
    99              moduleConfig3);
    100
    101         // -- configure the ServletConfig
    102         this.servletConfig = new MockServletConfig();
    103         this.servletConfig.setServletContext(servletContext);
    104
    105         // -- configure the request
    106         this.request = new MockHttpServletRequest(new MockHttpSession());
    107
    108         pageContext =
    109             new MockPageContext(servletConfig, request,
    110                 new MockHttpServletResponse());
    111     }
    112
    113     public void tearDown() {
    114         this.moduleConfig = null;
    115         this.moduleConfig2 = null;
    116         this.moduleConfig3 = null;
    117         this.pageContext = null;
    118         this.request = null;
    119     }
    120
    121     protected void putBundleInScope(int scope, boolean returnNull) {
    122         MessageResourcesFactory factory =
    123             MessageResourcesFactory.createFactory();
    124         MessageResources messageResources =
    125             new PropertyMessageResources(factory,
    126                 "org.apache.struts.taglib.sample");
    127
    128         messageResources.setReturnNull(returnNull);
    129         pageContext.setAttribute(Globals.MESSAGES_KEY, messageResources, scope);
    130     }
    131 }