craigmcc 2002/07/01 15:10:36 Added: src/test/org/apache/struts/mock MockEnumeration.java MockHttpServletRequest.java MockHttpServletResponse.java MockHttpSession.java MockPrincipal.java MockServletContext.java Log: Here are some initial mock objects for JUnit unit tests of things like RequestUtils methods when you don't need the full round-trip support provided by Cactus. I haven't actually used them in tests yet (that's next), wo beware of bugs I haven't found yet. Revision Changes Path 1.1 jakarta-struts/src/test/org/apache/struts/mock/MockEnumeration.java Index: MockEnumeration.java =================================================================== /* * $Header: /home/cvs/jakarta-struts/src/test/org/apache/struts/mock/MockEnumeration.java,v 1.1 2002/07/01 22:10:35 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2002/07/01 22:10:35 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.mock; import java.util.Enumeration; import java.util.Iterator; /** * <p>General purpose <code>Enumeration</code> wrapper around an * <code>Iterator</code> specified to our controller.</p> * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/07/01 22:10:35 $ */ public class MockEnumeration implements Enumeration { public MockEnumeration(Iterator iterator) { this.iterator = iterator; } protected Iterator iterator; public boolean hasMoreElements() { return (iterator.hasNext()); } public Object nextElement() { return (iterator.next()); } } 1.1 jakarta-struts/src/test/org/apache/struts/mock/MockHttpServletRequest.java Index: MockHttpServletRequest.java =================================================================== /* * $Header: /home/cvs/jakarta-struts/src/test/org/apache/struts/mock/MockHttpServletRequest.java,v 1.1 2002/07/01 22:10:35 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2002/07/01 22:10:35 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.mock; import java.io.BufferedReader; import java.io.IOException; import java.security.Principal; import java.util.Enumeration; import java.util.HashMap; import java.util.Locale; import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletInputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; /** * <p>Mock <strong>HttpServletRequest</strong> object for low-level unit tests * of Struts controller components. Coarser grained tests should be * implemented in terms of the Cactus framework, instead of the mock * object classes.</p> * * <p><strong>WARNING</strong> - Only the minimal set of methods needed to * create unit tests is provided, plus additional methods to configure this * object as necessary. Methods for unsupported operations will throw * <code>UnsupportedOperationException</code>.</p> * * <p><strong>WARNING</strong> - Because unit tests operate in a single * threaded environment, no synchronization is performed.</p> * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/07/01 22:10:35 $ */ public class MockHttpServletRequest implements HttpServletRequest { // ----------------------------------------------------------- Constructors public MockHttpServletRequest() { super(); } public MockHttpServletRequest(HttpSession session) { super(); setHttpSession(session); } public MockHttpServletRequest(String contextPath, String servletPath, String pathInfo, String queryString) { super(); setPathElements(contextPath, servletPath, pathInfo, queryString); } public MockHttpServletRequest(String contextPath, String servletPath, String pathInfo, String queryString, HttpSession session) { super(); setPathElements(contextPath, servletPath, pathInfo, queryString); setHttpSession(session); } // ----------------------------------------------------- Instance Variables /** * The set of request attributes. */ protected HashMap attributes = new HashMap(); /** * The context path for this request. */ protected String contextPath = null; /** * The preferred locale for this request. */ protected Locale locale = null; /** * The set of arrays of parameter values, keyed by parameter name. */ protected HashMap parameters = new HashMap(); /** * The extra path information for this request. */ protected String pathInfo = null; /** * The authenticated user for this request. */ protected Principal principal = null; /** * The query string for this request. */ protected String queryString = null; /** * The servlet path for this request. */ protected String servletPath = null; /** * The HttpSession with which we are associated. */ protected HttpSession session = null; // --------------------------------------------------------- Public Methods public void addParameter(String name, String value) { String values[] = (String[]) parameters.get(name); if (values == null) { String results[] = new String[] { value }; parameters.put(name, results); return; } String results[] = new String[values.length + 1]; System.arraycopy(values, 0, results, 0, values.length); results[values.length] = value; parameters.put(name, results); } public void setHttpSession(HttpSession session) { this.session = session; } public void setLocale(Locale locale) { this.locale = locale; } public void setPathElements(String contextPath, String servletPath, String pathInfo, String queryString) { this.contextPath = contextPath; this.servletPath = servletPath; this.pathInfo = pathInfo; this.queryString = queryString; } public void setUserPrincipal(Principal principal) { this.principal = principal; } // --------------------------------------------- HttpServletRequest Methods public String getAuthType() { throw new UnsupportedOperationException(); } public String getContextPath() { return (contextPath); } public Cookie[] getCookies() { throw new UnsupportedOperationException(); } public long getDateHeader(String name) { throw new UnsupportedOperationException(); } public String getHeader(String name) { throw new UnsupportedOperationException(); } public Enumeration getHeaderNames() { throw new UnsupportedOperationException(); } public Enumeration getHeaders(String name) { throw new UnsupportedOperationException(); } public int getIntHeader(String name) { throw new UnsupportedOperationException(); } public String getMethod() { throw new UnsupportedOperationException(); } public String getPathInfo() { return (pathInfo); } public String getPathTranslated() { throw new UnsupportedOperationException(); } public String getQueryString() { return (queryString); } public String getRemoteUser() { if (principal != null) { return (principal.getName()); } else { return (null); } } public String getRequestedSessionId() { throw new UnsupportedOperationException(); } public String getRequestURI() { StringBuffer sb = new StringBuffer(); if (contextPath != null) { sb.append(contextPath); } if (servletPath != null) { sb.append(servletPath); } if (pathInfo != null) { sb.append(pathInfo); } if (sb.length() > 0) { return (sb.toString()); } throw new UnsupportedOperationException(); } public StringBuffer getRequestURL() { throw new UnsupportedOperationException(); } public String getServletPath() { return (servletPath); } public HttpSession getSession() { return (getSession(true)); } public HttpSession getSession(boolean create) { if (create && (session == null)) { throw new UnsupportedOperationException(); } return (session); } public Principal getUserPrincipal() { return (principal); } public boolean isRequestedSessionIdFromCookie() { throw new UnsupportedOperationException(); } public boolean isRequestedSessionIdFromUrl() { throw new UnsupportedOperationException(); } public boolean isRequestedSessionIdFromURL() { throw new UnsupportedOperationException(); } public boolean isRequestedSessionIdValid() { throw new UnsupportedOperationException(); } public boolean isUserInRole(String role) { if ((principal != null) && (principal instanceof MockPrincipal)) { return (((MockPrincipal) principal).isUserInRole(role)); } else { return (false); } } // ------------------------------------------------- ServletRequest Methods public Object getAttribute(String name) { return (attributes.get(name)); } public Enumeration getAttributeNames() { return (new MockEnumeration(attributes.keySet().iterator())); } public String getCharacterEncoding() { throw new UnsupportedOperationException(); } public int getContentLength() { throw new UnsupportedOperationException(); } public String getContentType() { throw new UnsupportedOperationException(); } public ServletInputStream getInputStream() { throw new UnsupportedOperationException(); } public Locale getLocale() { return (locale); } public Enumeration getLocales() { throw new UnsupportedOperationException(); } public String getParameter(String name) { String values[] = (String[]) parameters.get(name); if (values != null) { return (values[0]); } else { return (null); } } public Map getParameterMap() { return (parameters); } public Enumeration getParameterNames() { return (new MockEnumeration(parameters.keySet().iterator())); } public String[] getParameterValues(String name) { return ((String[]) parameters.get(name)); } public String getProtocol() { throw new UnsupportedOperationException(); } public BufferedReader getReader() { throw new UnsupportedOperationException(); } public String getRealPath(String path) { throw new UnsupportedOperationException(); } public String getRemoteAddr() { throw new UnsupportedOperationException(); } public String getRemoteHost() { throw new UnsupportedOperationException(); } public RequestDispatcher getRequestDispatcher(String path) { throw new UnsupportedOperationException(); } public String getScheme() { throw new UnsupportedOperationException(); } public String getServerName() { throw new UnsupportedOperationException(); } public int getServerPort() { throw new UnsupportedOperationException(); } public boolean isSecure() { throw new UnsupportedOperationException(); } public void removeAttribute(String name) { attributes.remove(name); } public void setAttribute(String name, Object value) { if (value == null) { attributes.remove(name); } else { attributes.put(name, value); } } public void setCharacterEncoding(String name) { throw new UnsupportedOperationException(); } } 1.1 jakarta-struts/src/test/org/apache/struts/mock/MockHttpServletResponse.java Index: MockHttpServletResponse.java =================================================================== /* * $Header: /home/cvs/jakarta-struts/src/test/org/apache/struts/mock/MockHttpServletResponse.java,v 1.1 2002/07/01 22:10:35 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2002/07/01 22:10:35 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.mock; import java.io.IOException; import java.io.PrintWriter; import java.util.Locale; import javax.servlet.ServletOutputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; /** * <p>Mock <strong>HttpServletResponse</strong> object for low-level unit tests * of Struts controller components. Coarser grained tests should be * implemented in terms of the Cactus framework, instead of the mock * object classes.</p> * * <p><strong>WARNING</strong> - Only the minimal set of methods needed to * create unit tests is provided, plus additional methods to configure this * object as necessary. Methods for unsupported operations will throw * <code>UnsupportedOperationException</code>.</p> * * <p><strong>WARNING</strong> - Because unit tests operate in a single * threaded environment, no synchronization is performed.</p> * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/07/01 22:10:35 $ */ public class MockHttpServletResponse implements HttpServletResponse { // ----------------------------------------------------- Instance Variables // --------------------------------------------------------- Public Methods // -------------------------------------------- HttpServletResponse Methods public void addCookie(Cookie cookie) { throw new UnsupportedOperationException(); } public void addDateHeader(String name, long value) { throw new UnsupportedOperationException(); } public void addHeader(String name, String value) { throw new UnsupportedOperationException(); } public void addIntHeader(String name, int value) { throw new UnsupportedOperationException(); } public boolean containsHeader(String name) { throw new UnsupportedOperationException(); } public String encodeRedirectUrl(String url) { throw new UnsupportedOperationException(); } public String encodeRedirectURL(String url) { throw new UnsupportedOperationException(); } public String encodeUrl(String url) { throw new UnsupportedOperationException(); } public String encodeURL(String url) { throw new UnsupportedOperationException(); } public void sendError(int status) { throw new UnsupportedOperationException(); } public void sendError(int status, String message) { throw new UnsupportedOperationException(); } public void sendRedirect(String location) { throw new UnsupportedOperationException(); } public void setDateHeader(String name, long value) { throw new UnsupportedOperationException(); } public void setHeader(String name, String value) { throw new UnsupportedOperationException(); } public void setIntHeader(String name, int value) { throw new UnsupportedOperationException(); } public void setStatus(int status) { throw new UnsupportedOperationException(); } public void setStatus(int status, String message) { throw new UnsupportedOperationException(); } // ------------------------------------------------ ServletResponse Methods public void flushBuffer() { throw new UnsupportedOperationException(); } public int getBufferSize() { throw new UnsupportedOperationException(); } public String getCharacterEncoding() { throw new UnsupportedOperationException(); } public Locale getLocale() { throw new UnsupportedOperationException(); } public ServletOutputStream getOutputStream() throws IOException { throw new UnsupportedOperationException(); } public PrintWriter getWriter() throws IOException { throw new UnsupportedOperationException(); } public boolean isCommitted() { throw new UnsupportedOperationException(); } public void reset() { throw new UnsupportedOperationException(); } public void resetBuffer() { throw new UnsupportedOperationException(); } public void setBufferSize(int size) { throw new UnsupportedOperationException(); } public void setContentLength(int length) { throw new UnsupportedOperationException(); } public void setContentType(String type) { throw new UnsupportedOperationException(); } public void setLocale(Locale locale) { throw new UnsupportedOperationException(); } } 1.1 jakarta-struts/src/test/org/apache/struts/mock/MockHttpSession.java Index: MockHttpSession.java =================================================================== /* * $Header: /home/cvs/jakarta-struts/src/test/org/apache/struts/mock/MockHttpSession.java,v 1.1 2002/07/01 22:10:35 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2002/07/01 22:10:35 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.mock; import java.util.Enumeration; import java.util.HashMap; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionContext; /** * <p>Mock <strong>HttpSession</strong> object for low-level unit tests * of Struts controller components. Coarser grained tests should be * implemented in terms of the Cactus framework, instead of the mock * object classes.</p> * * <p><strong>WARNING</strong> - Only the minimal set of methods needed to * create unit tests is provided, plus additional methods to configure this * object as necessary. Methods for unsupported operations will throw * <code>UnsupportedOperationException</code>.</p> * * <p><strong>WARNING</strong> - Because unit tests operate in a single * threaded environment, no synchronization is performed.</p> * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/07/01 22:10:35 $ */ public class MockHttpSession implements HttpSession { // ----------------------------------------------------------- Constructors public MockHttpSession() { super(); } public MockHttpSession(ServletContext servletContext) { super(); setServletContext(servletContext); } // ----------------------------------------------------- Instance Variables /** * The set of session attributes. */ protected HashMap attributes = new HashMap(); /** * The ServletContext with which we are associated. */ protected ServletContext servletContext = null; // --------------------------------------------------------- Public Methods public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } // ---------------------------------------------------- HttpSession Methods public Object getAttribute(String name) { return (attributes.get(name)); } public Enumeration getAttributeNames() { return (new MockEnumeration(attributes.keySet().iterator())); } public long getCreationTime() { throw new UnsupportedOperationException(); } public String getId() { throw new UnsupportedOperationException(); } public long getLastAccessedTime() { throw new UnsupportedOperationException(); } public int getMaxInactiveInterval() { throw new UnsupportedOperationException(); } public ServletContext getServletContext() { return (this.servletContext); } public HttpSessionContext getSessionContext() { throw new UnsupportedOperationException(); } public Object getValue(String name) { throw new UnsupportedOperationException(); } public String[] getValueNames() { throw new UnsupportedOperationException(); } public void invalidate() { throw new UnsupportedOperationException(); } public boolean isNew() { throw new UnsupportedOperationException(); } public void putValue(String name, Object value) { throw new UnsupportedOperationException(); } public void removeAttribute(String name) { attributes.remove(name); } public void removeValue(String name) { throw new UnsupportedOperationException(); } public void setAttribute(String name, Object value) { if (value == null) { attributes.remove(name); } else { attributes.put(name, value); } } public void setMaxInactiveInterval(int interval) { throw new UnsupportedOperationException(); } } 1.1 jakarta-struts/src/test/org/apache/struts/mock/MockPrincipal.java Index: MockPrincipal.java =================================================================== /* * $Header: /home/cvs/jakarta-struts/src/test/org/apache/struts/mock/MockPrincipal.java,v 1.1 2002/07/01 22:10:35 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2002/07/01 22:10:35 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.mock; import java.security.Principal; /** * <p>Mock <strong>Principal</strong> object for low-level unit tests * of Struts controller components. Coarser grained tests should be * implemented in terms of the Cactus framework, instead of the mock * object classes.</p> * * <p><strong>WARNING</strong> - Only the minimal set of methods needed to * create unit tests is provided, plus additional methods to configure this * object as necessary. Methods for unsupported operations will throw * <code>UnsupportedOperationException</code>.</p> * * <p><strong>WARNING</strong> - Because unit tests operate in a single * threaded environment, no synchronization is performed.</p> * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/07/01 22:10:35 $ */ public class MockPrincipal implements Principal { public MockPrincipal(String name) { super(); this.name = name; this.roles = new String[0]; } public MockPrincipal(String name, String roles[]) { super(); this.name = name; this.roles = roles; } protected String name = null; protected String roles[] = null; public String getName() { return (this.name); } public boolean isUserInRole(String role) { for (int i = 0; i < roles.length; i++) { if (role.equals(roles[i])) { return (true); } } return (false); } } 1.1 jakarta-struts/src/test/org/apache/struts/mock/MockServletContext.java Index: MockServletContext.java =================================================================== /* * $Header: /home/cvs/jakarta-struts/src/test/org/apache/struts/mock/MockServletContext.java,v 1.1 2002/07/01 22:10:35 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2002/07/01 22:10:35 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.mock; import java.io.InputStream; import java.net.URL; import java.util.Enumeration; import java.util.HashMap; import java.util.Set; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; import javax.servlet.ServletContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * <p>Mock <strong>ServletContext</strong> object for low-level unit tests * of Struts controller components. Coarser grained tests should be * implemented in terms of the Cactus framework, instead of the mock * object classes.</p> * * <p><strong>WARNING</strong> - Only the minimal set of methods needed to * create unit tests is provided, plus additional methods to configure this * object as necessary. Methods for unsupported operations will throw * <code>UnsupportedOperationException</code>.</p> * * <p><strong>WARNING</strong> - Because unit tests operate in a single * threaded environment, no synchronization is performed.</p> * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/07/01 22:10:35 $ */ public class MockServletContext implements ServletContext { // ----------------------------------------------------- Instance Variables /** * The set of servlet context attributes. */ protected HashMap attributes = new HashMap(); /** * Default destination for <code>log()</code> output. */ protected Log log = LogFactory.getLog(MockServletContext.class); /** * The set of context initialization parameters. */ protected HashMap parameters = new HashMap(); // --------------------------------------------------------- Public Methods public void addInitParameter(String name, String value) { parameters.put(name, value); } public void setLog(Log log) { this.log = log; } // ------------------------------------------------- ServletContext Methods public Object getAttribute(String name) { return (attributes.get(name)); } public Enumeration getAttributeNames() { return (new MockEnumeration(attributes.keySet().iterator())); } public ServletContext getContext(String uripath) { throw new UnsupportedOperationException(); } public String getInitParameter(String name) { return ((String) parameters.get(name)); } public Enumeration getInitParameterNames() { return (new MockEnumeration(parameters.keySet().iterator())); } public int getMajorVersion() { return (2); } public String getMimeType(String file) { throw new UnsupportedOperationException(); } public int getMinorVersion() { return (3); } public RequestDispatcher getNamedDispatcher(String name) { throw new UnsupportedOperationException(); } public String getRealPath(String path) { throw new UnsupportedOperationException(); } public RequestDispatcher getRequestDispatcher(String path) { throw new UnsupportedOperationException(); } public URL getResource(String path) { throw new UnsupportedOperationException(); } public InputStream getResourceAsStream(String path) { throw new UnsupportedOperationException(); } public Set getResourcePaths(String path) { throw new UnsupportedOperationException(); } public String getServerInfo() { return ("MockServletContext/$Version$"); } public Servlet getServlet(String name) { throw new UnsupportedOperationException(); } public String getServletContextName() { return (getServerInfo()); } public Enumeration getServletNames() { throw new UnsupportedOperationException(); } public Enumeration getServlets() { throw new UnsupportedOperationException(); } public void log(Exception exception, String message) { log(message, exception); } public void log(String message) { log.info(message); } public void log(String message, Throwable throwable) { log.error(message, throwable); } public void removeAttribute(String name) { attributes.remove(name); } public void setAttribute(String name, Object value) { if (value == null) { attributes.remove(name); } else { attributes.put(name, value); } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>