Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java?rev=1724523&r1=1724522&r2=1724523&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java Wed Jan 13 23:07:09 2016 @@ -18,97 +18,22 @@ */ package org.apache.sling.testing.mock.sling.servlet; -import static org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletResponse.CHARSET_SEPARATOR; - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.security.Principal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.ListResourceBundle; import java.util.Locale; -import java.util.Map; import java.util.ResourceBundle; -import javax.servlet.AsyncContext; -import javax.servlet.DispatcherType; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import javax.servlet.http.Part; - -import org.apache.commons.collections.IteratorUtils; -import org.apache.commons.lang3.CharEncoding; -import org.apache.commons.lang3.StringUtils; -import org.apache.sling.api.SlingHttpServletRequest; -import org.apache.sling.api.adapter.SlingAdaptable; -import org.apache.sling.api.request.RequestDispatcherOptions; -import org.apache.sling.api.request.RequestParameter; -import org.apache.sling.api.request.RequestParameterMap; -import org.apache.sling.api.request.RequestPathInfo; -import org.apache.sling.api.request.RequestProgressTracker; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; -import org.apache.sling.api.servlets.HttpConstants; import org.apache.sling.i18n.ResourceBundleProvider; import org.apache.sling.testing.mock.osgi.MockOsgi; import org.apache.sling.testing.mock.sling.MockSling; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; -import com.google.common.collect.ImmutableList; - /** * Mock {@link SlingHttpServletRequest} implementation. */ -public class MockSlingHttpServletRequest extends SlingAdaptable implements SlingHttpServletRequest { +public class MockSlingHttpServletRequest extends org.apache.sling.servlethelpers.MockSlingHttpServletRequest { - private final ResourceResolver resourceResolver; private final BundleContext bundleContext; - private RequestPathInfo requestPathInfo = new MockRequestPathInfo(); - private Map<String, Object> attributeMap = new HashMap<String, Object>(); - private Map<String, String[]> parameterMap = new LinkedHashMap<String, String[]>(); - private HttpSession session; - private Resource resource; - private String contextPath; - private String queryString; - private String scheme = "http"; - private String serverName = "localhost"; - private int serverPort = 80; - private String method = HttpConstants.METHOD_GET; - private final HeaderSupport headerSupport = new HeaderSupport(); - private final CookieSupport cookieSupport = new CookieSupport(); - private String contentType; - private String characterEncoding; - private byte[] content; - private String remoteUser; - private String remoteAddr; - private String remoteHost; - private int remotePort; - - private MockRequestDispatcherFactory requestDispatcherFactory; - - private static final ResourceBundle EMPTY_RESOURCE_BUNDLE = new ListResourceBundle() { - @Override - protected Object[][] getContents() { - return new Object[0][0]; - } - }; /** * Instantiate with default resource resolver @@ -130,7 +55,10 @@ public class MockSlingHttpServletRequest /** * @param resourceResolver Resource resolver + * @deprecated Please use {@link #MockSlingHttpServletRequest(ResourceResolver, BundleContext)} + * and shutdown the bundle context after usage. */ + @Deprecated public MockSlingHttpServletRequest(ResourceResolver resourceResolver) { this(resourceResolver, MockOsgi.newBundleContext()); } @@ -140,341 +68,18 @@ public class MockSlingHttpServletRequest * @param bundleContext Bundle context */ public MockSlingHttpServletRequest(ResourceResolver resourceResolver, BundleContext bundleContext) { - this.resourceResolver = resourceResolver; + super(resourceResolver); this.bundleContext = bundleContext; } - @Override - public ResourceResolver getResourceResolver() { - return this.resourceResolver; - } - - @Override - public HttpSession getSession() { - return getSession(true); - } - - @Override - public HttpSession getSession(boolean create) { - if (this.session == null && create) { - this.session = new MockHttpSession(); - } - return this.session; - } - - @Override - public RequestPathInfo getRequestPathInfo() { - return this.requestPathInfo; - } - - @Override - public Object getAttribute(String name) { - return this.attributeMap.get(name); - } - - @SuppressWarnings("unchecked") - @Override - public Enumeration<String> getAttributeNames() { - return IteratorUtils.asEnumeration(this.attributeMap.keySet().iterator()); - } - - @Override - public void removeAttribute(String name) { - this.attributeMap.remove(name); - } - - @Override - public void setAttribute(String name, Object object) { - this.attributeMap.put(name, object); - } - - @Override - public Resource getResource() { - return this.resource; - } - - public void setResource(Resource resource) { - this.resource = resource; - } - - @Override - public String getParameter(String name) { - Object object = this.parameterMap.get(name); - if (object instanceof String) { - return (String) object; - } else if (object instanceof String[]) { - String[] values = (String[]) object; - if (values.length > 0) { - return values[0]; - } - } - return null; - } - - @Override - public Map<String, String[]> getParameterMap() { - return this.parameterMap; - } - - @SuppressWarnings("unchecked") - @Override - public Enumeration<String> getParameterNames() { - return IteratorUtils.asEnumeration(this.parameterMap.keySet().iterator()); - } - - @Override - public String[] getParameterValues(String name) { // NOPMD - Object object = this.parameterMap.get(name); - if (object instanceof String) { - return new String[] { (String) object }; - } else if (object instanceof String[]) { - return (String[]) object; - } - return null; // NOPMD - } - - /** - * @param parameterMap Map of parameters - */ - public void setParameterMap(Map<String, Object> parameterMap) { - this.parameterMap.clear(); - for (Map.Entry<String, Object> entry : parameterMap.entrySet()) { - String key = entry.getKey(); - Object value = entry.getValue(); - if (value instanceof String[]) { - this.parameterMap.put(key, (String[]) value); - } else if (value != null) { - this.parameterMap.put(key, new String[] { value.toString() }); - } else { - this.parameterMap.put(key, null); - } - } - try { - this.queryString = formatQueryString(this.parameterMap); - } catch (UnsupportedEncodingException ex) { - throw new RuntimeException(ex); - } - } - - private String formatQueryString(Map<String, String[]> map) throws UnsupportedEncodingException { - StringBuilder querystring = new StringBuilder(); - for (Map.Entry<String, String[]> entry : this.parameterMap.entrySet()) { - if (entry.getValue() != null) { - for (String value : entry.getValue()) { - if (querystring.length() != 0) { - querystring.append('&'); - } - querystring.append(URLEncoder.encode(entry.getKey(), CharEncoding.UTF_8)); - querystring.append('='); - if (value != null) { - querystring.append(URLEncoder.encode(value, CharEncoding.UTF_8)); - } - } - } - } - if (querystring.length() > 0) { - return querystring.toString(); - } else { - return null; - } - } - - @Override - public Locale getLocale() { - return Locale.US; - } - - @Override - public String getContextPath() { - return this.contextPath; - } - - /** - * @param contextPath Webapp context path - */ - public void setContextPath(String contextPath) { - this.contextPath = contextPath; - } - - /** - * @param queryString Query string (with proper URL encoding) - */ - public void setQueryString(String queryString) { - this.queryString = queryString; - try { - parseQueryString(this.parameterMap, this.queryString); - } catch (UnsupportedEncodingException ex) { - throw new RuntimeException(ex); - } - } - - private void parseQueryString(Map<String, String[]> map, String query) throws UnsupportedEncodingException { - Map<String, List<String>> queryPairs = new LinkedHashMap<String, List<String>>(); - String[] pairs = query.split("&"); - for (String pair : pairs) { - int idx = pair.indexOf('='); - String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), CharEncoding.UTF_8) : pair; - if (!queryPairs.containsKey(key)) { - queryPairs.put(key, new ArrayList<String>()); - } - String value = idx > 0 && pair.length() > idx + 1 ? URLDecoder.decode(pair.substring(idx + 1), - CharEncoding.UTF_8) : null; - queryPairs.get(key).add(value); - } - map.clear(); - for (Map.Entry<String, List<String>> entry : queryPairs.entrySet()) { - map.put(entry.getKey(), entry.getValue().toArray(new String[entry.getValue().size()])); - } - } - - @Override - public String getQueryString() { - return this.queryString; - } - - @Override - public String getScheme() { - return this.scheme; - } - - public void setScheme(String scheme) { - this.scheme = scheme; - } - - @Override - public String getServerName() { - return this.serverName; - } - - public void setServerName(String serverName) { - this.serverName = serverName; - } - - @Override - public int getServerPort() { - return this.serverPort; - } - - public void setServerPort(int serverPort) { - this.serverPort = serverPort; + protected MockRequestPathInfo newMockRequestPathInfo() { + return new MockRequestPathInfo(); } - @Override - public boolean isSecure() { - return StringUtils.equals("https", getScheme()); - } - - @Override - public String getMethod() { - return this.method; - } - - public void setMethod(String method) { - this.method = method; + protected MockHttpSession newMockHttpSession() { + return new MockHttpSession(); } - - @Override - public long getDateHeader(String name) { - return headerSupport.getDateHeader(name); - } - - @Override - public String getHeader(String name) { - return headerSupport.getHeader(name); - } - - @Override - public Enumeration<String> getHeaderNames() { - return HeaderSupport.toEnumeration(headerSupport.getHeaderNames()); - } - - @Override - public Enumeration<String> getHeaders(String name) { - return HeaderSupport.toEnumeration(headerSupport.getHeaders(name)); - } - - @Override - public int getIntHeader(String name) { - return headerSupport.getIntHeader(name); - } - - /** - * Add header, keep existing ones with same name. - * @param name Header name - * @param value Header value - */ - public void addHeader(String name, String value) { - headerSupport.addHeader(name, value); - } - - /** - * Add header, keep existing ones with same name. - * @param name Header name - * @param value Header value - */ - public void addIntHeader(String name, int value) { - headerSupport.addIntHeader(name, value); - } - - /** - * Add header, keep existing ones with same name. - * @param name Header name - * @param date Header value - */ - public void addDateHeader(String name, long date) { - headerSupport.addDateHeader(name, date); - } - - /** - * Set header, overwrite existing ones with same name. - * @param name Header name - * @param value Header value - */ - public void setHeader(String name, String value) { - headerSupport.setHeader(name, value); - } - - /** - * Set header, overwrite existing ones with same name. - * @param name Header name - * @param value Header value - */ - public void setIntHeader(String name, int value) { - headerSupport.setIntHeader(name, value); - } - - /** - * Set header, overwrite existing ones with same name. - * @param name Header name - * @param date Header value - */ - public void setDateHeader(String name, long date) { - headerSupport.setDateHeader(name, date); - } - - @Override - public Cookie getCookie(String name) { - return cookieSupport.getCookie(name); - } - - @Override - public Cookie[] getCookies() { - return cookieSupport.getCookies(); - } - - /** - * Set cookie - * @param cookie Cookie - */ - public void addCookie(Cookie cookie) { - cookieSupport.addCookie(cookie); - } - - @Override - public ResourceBundle getResourceBundle(Locale locale) { - return getResourceBundle(null, locale); - } - + @Override public ResourceBundle getResourceBundle(String baseName, Locale locale) { // check of ResourceBundleProvider is registered in mock OSGI context @@ -491,348 +96,4 @@ public class MockSlingHttpServletRequest return resourceBundle; } - @Override - public RequestParameter getRequestParameter(String name) { - String value = getParameter(name); - if (value != null) { - return new MockRequestParameter(name, value); - } - return null; - } - - @Override - public RequestParameterMap getRequestParameterMap() { - MockRequestParameterMap map = new MockRequestParameterMap(); - for (Map.Entry<String,String[]> entry : getParameterMap().entrySet()) { - map.put(entry.getKey(), getRequestParameters(entry.getKey())); - } - return map; - } - - @Override - public RequestParameter[] getRequestParameters(String name) { - String[] values = getParameterValues(name); - if (values == null) { - return null; - } - RequestParameter[] requestParameters = new RequestParameter[values.length]; - for (int i = 0; i < values.length; i++) { - requestParameters[i] = new MockRequestParameter(name, values[i]); - } - return requestParameters; - } - - // part of Sling API 2.7 - public List<RequestParameter> getRequestParameterList() { - List<RequestParameter> params = new ArrayList<RequestParameter>(); - for (RequestParameter[] requestParameters : getRequestParameterMap().values()) { - params.addAll(ImmutableList.copyOf(requestParameters)); - } - return params; - } - - @Override - public String getCharacterEncoding() { - return this.characterEncoding; - } - - @Override - public void setCharacterEncoding(String charset) { - this.characterEncoding = charset; - } - - @Override - public String getContentType() { - if (this.contentType == null) { - return null; - } else { - return this.contentType - + (StringUtils.isNotBlank(characterEncoding) ? CHARSET_SEPARATOR + characterEncoding : ""); - } - } - - public void setContentType(String type) { - this.contentType = type; - if (StringUtils.contains(this.contentType, CHARSET_SEPARATOR)) { - this.characterEncoding = StringUtils.substringAfter(this.contentType, CHARSET_SEPARATOR); - this.contentType = StringUtils.substringBefore(this.contentType, CHARSET_SEPARATOR); - } - } - - @Override - public ServletInputStream getInputStream() { - if (content == null) { - return null; - } - return new ServletInputStream() { - private final InputStream is = new ByteArrayInputStream(content); - @Override - public int read() throws IOException { - return is.read(); - } - }; - } - - @Override - public int getContentLength() { - if (content == null) { - return 0; - } - return content.length; - } - - public void setContent(byte[] content) { - this.content = content; - } - - @Override - public RequestDispatcher getRequestDispatcher(String path) { - if (requestDispatcherFactory == null) { - throw new IllegalStateException("Please provdide a MockRequestDispatcherFactory (setRequestDispatcherFactory)."); - } - return requestDispatcherFactory.getRequestDispatcher(path, null); - } - - @Override - public RequestDispatcher getRequestDispatcher(String path, RequestDispatcherOptions options) { - if (requestDispatcherFactory == null) { - throw new IllegalStateException("Please provdide a MockRequestDispatcherFactory (setRequestDispatcherFactory)."); - } - return requestDispatcherFactory.getRequestDispatcher(path, options); - } - - @Override - public RequestDispatcher getRequestDispatcher(Resource resource) { - if (requestDispatcherFactory == null) { - throw new IllegalStateException("Please provdide a MockRequestDispatcherFactory (setRequestDispatcherFactory)."); - } - return requestDispatcherFactory.getRequestDispatcher(resource, null); - } - - @Override - public RequestDispatcher getRequestDispatcher(Resource resource, RequestDispatcherOptions options) { - if (requestDispatcherFactory == null) { - throw new IllegalStateException("Please provdide a MockRequestDispatcherFactory (setRequestDispatcherFactory)."); - } - return requestDispatcherFactory.getRequestDispatcher(resource, options); - } - - public void setRequestDispatcherFactory(MockRequestDispatcherFactory requestDispatcherFactory) { - this.requestDispatcherFactory = requestDispatcherFactory; - } - - @Override - public String getRemoteUser() { - return remoteUser; - } - - public void setRemoteUser(String remoteUser) { - this.remoteUser = remoteUser; - } - - @Override - public String getRemoteAddr() { - return remoteAddr; - } - - public void setRemoteAddr(String remoteAddr) { - this.remoteAddr = remoteAddr; - } - - @Override - public String getRemoteHost() { - return remoteHost; - } - - public void setRemoteHost(String remoteHost) { - this.remoteHost = remoteHost; - } - - @Override - public int getRemotePort() { - return remotePort; - } - - public void setRemotePort(int remotePort) { - this.remotePort = remotePort; - } - - - // --- unsupported operations --- - - @Override - public RequestProgressTracker getRequestProgressTracker() { - throw new UnsupportedOperationException(); - } - - @Override - public String getResponseContentType() { - throw new UnsupportedOperationException(); - } - - @Override - public Enumeration<String> getResponseContentTypes() { - throw new UnsupportedOperationException(); - } - - @Override - public String getAuthType() { - throw new UnsupportedOperationException(); - } - - @Override - public String getPathInfo() { - throw new UnsupportedOperationException(); - } - - @Override - public String getPathTranslated() { - throw new UnsupportedOperationException(); - } - - @Override - public String getRequestURI() { - throw new UnsupportedOperationException(); - } - - @Override - public StringBuffer getRequestURL() { - throw new UnsupportedOperationException(); - } - - @Override - public String getRequestedSessionId() { - throw new UnsupportedOperationException(); - } - - @Override - public String getServletPath() { - throw new UnsupportedOperationException(); - } - - @Override - public Principal getUserPrincipal() { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isRequestedSessionIdFromCookie() { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isRequestedSessionIdFromURL() { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isRequestedSessionIdFromUrl() { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isRequestedSessionIdValid() { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isUserInRole(String role) { - throw new UnsupportedOperationException(); - } - - @Override - public String getLocalAddr() { - throw new UnsupportedOperationException(); - } - - @Override - public String getLocalName() { - throw new UnsupportedOperationException(); - } - - @Override - public int getLocalPort() { - throw new UnsupportedOperationException(); - } - - @Override - public Enumeration<Locale> getLocales() { - throw new UnsupportedOperationException(); - } - - @Override - public String getProtocol() { - throw new UnsupportedOperationException(); - } - - @Override - public BufferedReader getReader() { - throw new UnsupportedOperationException(); - } - - @Override - public String getRealPath(String path) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean authenticate(HttpServletResponse response) { - throw new UnsupportedOperationException(); - } - - @Override - public void login(String pUsername, String password) { - throw new UnsupportedOperationException(); - } - - @Override - public void logout() throws ServletException { - throw new UnsupportedOperationException(); - } - - @Override - public Collection<Part> getParts() { - throw new UnsupportedOperationException(); - } - - @Override - public Part getPart(String name) { - throw new UnsupportedOperationException(); - } - - @Override - public ServletContext getServletContext() { - throw new UnsupportedOperationException(); - } - - @Override - public AsyncContext startAsync() { - throw new UnsupportedOperationException(); - } - - @Override - public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isAsyncStarted() { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isAsyncSupported() { - throw new UnsupportedOperationException(); - } - - @Override - public AsyncContext getAsyncContext() { - throw new UnsupportedOperationException(); - } - - @Override - public DispatcherType getDispatcherType() { - throw new UnsupportedOperationException(); - } - }
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponse.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponse.java?rev=1724523&r1=1724522&r2=1724523&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponse.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponse.java Wed Jan 13 23:07:09 2016 @@ -18,262 +18,11 @@ */ package org.apache.sling.testing.mock.sling.servlet; -import java.io.PrintWriter; -import java.util.Collection; -import java.util.Locale; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.lang3.StringUtils; -import org.apache.sling.api.SlingHttpServletResponse; -import org.apache.sling.api.adapter.SlingAdaptable; - /** * Mock {@link SlingHttpServletResponse} implementation. */ -public class MockSlingHttpServletResponse extends SlingAdaptable implements SlingHttpServletResponse { - - static final String CHARSET_SEPARATOR = ";charset="; - - private String contentType; - private String characterEncoding; - private int contentLength; - private int status = HttpServletResponse.SC_OK; - private int bufferSize = 1024 * 8; - private boolean isCommitted; - private final HeaderSupport headerSupport = new HeaderSupport(); - private final ResponseBodySupport bodySupport = new ResponseBodySupport(); - private final CookieSupport cookieSupport = new CookieSupport(); - - @Override - public String getContentType() { - if (this.contentType == null) { - return null; - } else { - return this.contentType - + (StringUtils.isNotBlank(characterEncoding) ? CHARSET_SEPARATOR + characterEncoding : ""); - } - } - - @Override - public void setContentType(String type) { - this.contentType = type; - if (StringUtils.contains(this.contentType, CHARSET_SEPARATOR)) { - this.characterEncoding = StringUtils.substringAfter(this.contentType, CHARSET_SEPARATOR); - this.contentType = StringUtils.substringBefore(this.contentType, CHARSET_SEPARATOR); - } - } - - @Override - public void setCharacterEncoding(String charset) { - this.characterEncoding = charset; - } - - @Override - public String getCharacterEncoding() { - return this.characterEncoding; - } - - @Override - public void setContentLength(int len) { - this.contentLength = len; - } - - public int getContentLength() { - return this.contentLength; - } - - @Override - public void setStatus(int sc, String sm) { - setStatus(sc); - } - - @Override - public void setStatus(int sc) { - this.status = sc; - } - - @Override - public int getStatus() { - return this.status; - } - - @Override - public void sendError(int sc, String msg) { - setStatus(sc); - } - - @Override - public void sendError(int sc) { - setStatus(sc); - } - - @Override - public void sendRedirect(String location) { - setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); - setHeader("Location", location); - } - - @Override - public void addHeader(String name, String value) { - headerSupport.addHeader(name, value); - } - - @Override - public void addIntHeader(String name, int value) { - headerSupport.addIntHeader(name, value); - } - - @Override - public void addDateHeader(String name, long date) { - headerSupport.addDateHeader(name, date); - } - - @Override - public void setHeader(String name, String value) { - headerSupport.setHeader(name, value); - } - - @Override - public void setIntHeader(String name, int value) { - headerSupport.setIntHeader(name, value); - } - - @Override - public void setDateHeader(String name, long date) { - headerSupport.setDateHeader(name, date); - } - - @Override - public boolean containsHeader(String name) { - return headerSupport.containsHeader(name); - } - - @Override - public String getHeader(String name) { - return headerSupport.getHeader(name); - } - - @Override - public Collection<String> getHeaders(String name) { - return headerSupport.getHeaders(name); - } - - @Override - public Collection<String> getHeaderNames() { - return headerSupport.getHeaderNames(); - } - - @Override - public PrintWriter getWriter() { - return bodySupport.getWriter(getCharacterEncoding()); - } - - @Override - public ServletOutputStream getOutputStream() { - return bodySupport.getOutputStream(); - } - - @Override - public void reset() { - if (isCommitted()) { - throw new IllegalStateException("Response already committed."); - } - bodySupport.reset(); - headerSupport.reset(); - cookieSupport.reset(); - status = HttpServletResponse.SC_OK; - contentLength = 0; - } - - @Override - public void resetBuffer() { - if (isCommitted()) { - throw new IllegalStateException("Response already committed."); - } - bodySupport.reset(); - } - - @Override - public int getBufferSize() { - return this.bufferSize; - } - - @Override - public void setBufferSize(int size) { - this.bufferSize = size; - } - - @Override - public void flushBuffer() { - isCommitted = true; - } - - @Override - public boolean isCommitted() { - return isCommitted; - } - - public byte[] getOutput() { - return bodySupport.getOutput(); - } - - public String getOutputAsString() { - return bodySupport.getOutputAsString(getCharacterEncoding()); - } - - @Override - public void addCookie(Cookie cookie) { - cookieSupport.addCookie(cookie); - } - - /** - * Get cookie - * @param name Cookie name - * @return Cookie or null - */ - public Cookie getCookie(String name) { - return cookieSupport.getCookie(name); - } - - /** - * Get cookies - * @return Cookies array or null if no cookie defined - */ - public Cookie[] getCookies() { - return cookieSupport.getCookies(); - } - - // --- unsupported operations --- - @Override - public Locale getLocale() { - throw new UnsupportedOperationException(); - } - - @Override - public void setLocale(Locale loc) { - throw new UnsupportedOperationException(); - } - - @Override - public String encodeRedirectUrl(String url) { - throw new UnsupportedOperationException(); - } - - @Override - public String encodeRedirectURL(String url) { - throw new UnsupportedOperationException(); - } +public class MockSlingHttpServletResponse extends org.apache.sling.servlethelpers.MockSlingHttpServletResponse { - @Override - public String encodeUrl(String url) { - throw new UnsupportedOperationException(); - } + // inherit from superclass - @Override - public String encodeURL(String url) { - throw new UnsupportedOperationException(); - } } Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java?rev=1724523&r1=1724522&r2=1724523&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java Wed Jan 13 23:07:09 2016 @@ -19,5 +19,5 @@ /** * Mock implementation of selected Servlet-related Sling APIs. */ [email protected]("1.4") [email protected]("2.0") package org.apache.sling.testing.mock.sling.servlet; Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java?rev=1724523&r1=1724522&r2=1724523&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java Wed Jan 13 23:07:09 2016 @@ -46,7 +46,7 @@ public class MockSlingScriptHelperTest { public void setUp() throws Exception { this.bundleContext = MockOsgi.newBundleContext(); this.resourceResolver = MockSling.newResourceResolver(bundleContext); - this.request = new MockSlingHttpServletRequest(this.resourceResolver); + this.request = new MockSlingHttpServletRequest(this.resourceResolver, bundleContext); this.response = new MockSlingHttpServletResponse(); this.scriptHelper = MockSling.newSlingScriptHelper(this.request, this.response, this.bundleContext); } Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java?rev=1724523&r1=1724522&r2=1724523&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java Wed Jan 13 23:07:09 2016 @@ -18,8 +18,6 @@ */ package org.apache.sling.testing.mock.sling.servlet; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -38,65 +36,7 @@ public class MockHttpSessionTest { @Test public void testServletContext() { assertNotNull(httpSession.getServletContext()); - } - - @Test - public void testId() { - assertNotNull(httpSession.getId()); - } - - @Test - public void testCreationTime() { - assertNotNull(httpSession.getCreationTime()); - } - - @Test - public void testAttributes() { - httpSession.setAttribute("attr1", "value1"); - assertTrue(httpSession.getAttributeNames().hasMoreElements()); - assertEquals("value1", httpSession.getAttribute("attr1")); - httpSession.removeAttribute("attr1"); - assertFalse(httpSession.getAttributeNames().hasMoreElements()); - } - - @Test - public void testValues() { - httpSession.putValue("attr1", "value1"); - assertEquals(1, httpSession.getValueNames().length); - assertEquals("value1", httpSession.getValue("attr1")); - httpSession.removeValue("attr1"); - assertEquals(0, httpSession.getValueNames().length); - } - - @Test - public void testInvalidate() { - httpSession.invalidate(); - assertTrue(httpSession.isInvalidated()); - } - - @Test(expected = IllegalStateException.class) - public void testInvalidateStateCheck() { - httpSession.invalidate(); - httpSession.getAttribute("attr1"); - } - - @Test - public void testIsNew() { - assertTrue(httpSession.isNew()); - httpSession.setNew(false); - assertFalse(httpSession.isNew()); - } - - @Test - public void testGetLastAccessedTime() { - assertNotNull(httpSession.getLastAccessedTime()); - } - - @Test - public void testGetMaxInactiveInterval() { - assertTrue(httpSession.getMaxInactiveInterval() > 0); - httpSession.setMaxInactiveInterval(123); - assertEquals(123, httpSession.getMaxInactiveInterval()); + assertTrue(httpSession.getServletContext() instanceof MockServletContext); } } Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java?rev=1724523&r1=1724522&r2=1724523&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java Wed Jan 13 23:07:09 2016 @@ -18,38 +18,24 @@ */ package org.apache.sling.testing.mock.sling.servlet; -import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.Calendar; -import java.util.Enumeration; -import java.util.LinkedHashMap; import java.util.ListResourceBundle; import java.util.Locale; -import java.util.Map; import java.util.ResourceBundle; -import javax.servlet.RequestDispatcher; -import javax.servlet.http.Cookie; import javax.servlet.http.HttpSession; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.CharEncoding; -import org.apache.sling.api.request.RequestDispatcherOptions; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; -import org.apache.sling.api.servlets.HttpConstants; import org.apache.sling.i18n.ResourceBundleProvider; +import org.apache.sling.servlethelpers.MockHttpSession; import org.apache.sling.testing.mock.osgi.MockOsgi; import org.junit.After; import org.junit.Before; @@ -92,146 +78,18 @@ public class MockSlingHttpServletRequest @Test public void testSession() { - HttpSession session = request.getSession(false); - assertNull(session); - session = request.getSession(); + HttpSession session = request.getSession(); assertNotNull(session); + assertTrue(session instanceof MockHttpSession); } @Test public void testRequestPathInfo() { assertNotNull(request.getRequestPathInfo()); + assertTrue(request.getRequestPathInfo() instanceof MockRequestPathInfo); } @Test - public void testAttributes() { - request.setAttribute("attr1", "value1"); - assertTrue(request.getAttributeNames().hasMoreElements()); - assertEquals("value1", request.getAttribute("attr1")); - request.removeAttribute("attr1"); - assertFalse(request.getAttributeNames().hasMoreElements()); - } - - @Test - public void testResource() { - assertNull(request.getResource()); - request.setResource(resource); - assertSame(resource, request.getResource()); - } - - @Test - public void testContextPath() { - assertNull(request.getContextPath()); - request.setContextPath("/ctx"); - assertEquals("/ctx", request.getContextPath()); - } - - @Test - public void testLocale() { - assertEquals(Locale.US, request.getLocale()); - } - - @Test - public void testQueryString() throws UnsupportedEncodingException { - assertNull(request.getQueryString()); - assertEquals(0, request.getParameterMap().size()); - assertFalse(request.getParameterNames().hasMoreElements()); - - request.setQueryString("param1=123¶m2=" + URLEncoder.encode("äöüÃâ¬!:!", CharEncoding.UTF_8) - + "¶m3=a¶m3=b"); - - assertNotNull(request.getQueryString()); - assertEquals(3, request.getParameterMap().size()); - assertTrue(request.getParameterNames().hasMoreElements()); - assertEquals("123", request.getParameter("param1")); - assertEquals("äöüÃâ¬!:!", request.getParameter("param2")); - assertArrayEquals(new String[] { "a", "b" }, request.getParameterValues("param3")); - - Map<String, Object> paramMap = new LinkedHashMap<String, Object>(); - paramMap.put("p1", "a"); - paramMap.put("p2", new String[] { "b", "c" }); - paramMap.put("p3", null); - paramMap.put("p4", new String[] { null }); - paramMap.put("p5", 22); - request.setParameterMap(paramMap); - - assertEquals("p1=a&p2=b&p2=c&p4=&p5=22", request.getQueryString()); - } - - @Test - public void testSchemeSecure() { - assertEquals("http", request.getScheme()); - assertFalse(request.isSecure()); - - request.setScheme("https"); - assertEquals("https", request.getScheme()); - assertTrue(request.isSecure()); - } - - @Test - public void testServerNamePort() { - assertEquals("localhost", request.getServerName()); - assertEquals(80, request.getServerPort()); - - request.setServerName("myhost"); - request.setServerPort(12345); - assertEquals("myhost", request.getServerName()); - assertEquals(12345, request.getServerPort()); - } - - @Test - public void testMethod() { - assertEquals(HttpConstants.METHOD_GET, request.getMethod()); - - request.setMethod(HttpConstants.METHOD_POST); - assertEquals(HttpConstants.METHOD_POST, request.getMethod()); - } - - @Test - public void testHeaders() { - assertFalse(request.getHeaderNames().hasMoreElements()); - - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.MILLISECOND, 0); - long dateValue = calendar.getTimeInMillis(); - - request.addHeader("header1", "value1"); - request.addIntHeader("header2", 5); - request.addDateHeader("header3", dateValue); - - assertEquals("value1", request.getHeader("header1")); - assertEquals(5, request.getIntHeader("header2")); - assertEquals(dateValue, request.getDateHeader("header3")); - - request.setHeader("header1", "value2"); - request.addIntHeader("header2", 10); - - Enumeration<String> header1Values = request.getHeaders("header1"); - assertEquals("value2", header1Values.nextElement()); - assertFalse(header1Values.hasMoreElements()); - - Enumeration<String> header2Values = request.getHeaders("header2"); - assertEquals("5", header2Values.nextElement()); - assertEquals("10", header2Values.nextElement()); - assertFalse(header2Values.hasMoreElements()); - } - - @Test - public void testCookies() { - assertNull(request.getCookies()); - - request.addCookie(new Cookie("cookie1", "value1")); - request.addCookie(new Cookie("cookie2", "value2")); - - assertEquals("value1", request.getCookie("cookie1").getValue()); - - Cookie[] cookies = request.getCookies(); - assertEquals(2, cookies.length); - assertEquals("value1", cookies[0].getValue()); - assertEquals("value2", cookies[1].getValue()); - } - - @Test public void testDefaultResourceBundle() { ResourceBundle bundle = request.getResourceBundle(Locale.US); assertNotNull(bundle); @@ -260,102 +118,4 @@ public class MockSlingHttpServletRequest assertFalse(bundle2.getKeys().hasMoreElements()); } - @Test - public void testRequestParameter() throws Exception { - request.setQueryString("param1=123¶m2=" + URLEncoder.encode("äöüÃâ¬!:!", CharEncoding.UTF_8) - + "¶m3=a¶m3=b"); - - assertEquals(3, request.getRequestParameterMap().size()); - assertEquals(4, request.getRequestParameterList().size()); - assertEquals("123", request.getRequestParameter("param1").getString()); - assertEquals("äöüÃâ¬!:!", request.getRequestParameter("param2").getString()); - assertEquals("a",request.getRequestParameters("param3")[0].getString()); - assertEquals("b",request.getRequestParameters("param3")[1].getString()); - - assertNull(request.getRequestParameter("unknown")); - assertNull(request.getRequestParameters("unknown")); - } - - @Test - public void testContentTypeCharset() throws Exception { - assertNull(request.getContentType()); - assertNull(request.getCharacterEncoding()); - - request.setContentType("image/gif"); - assertEquals("image/gif", request.getContentType()); - assertNull(request.getCharacterEncoding()); - - request.setContentType("text/plain;charset=UTF-8"); - assertEquals("text/plain;charset=UTF-8", request.getContentType()); - assertEquals(CharEncoding.UTF_8, request.getCharacterEncoding()); - - request.setCharacterEncoding(CharEncoding.ISO_8859_1); - assertEquals("text/plain;charset=ISO-8859-1", request.getContentType()); - assertEquals(CharEncoding.ISO_8859_1, request.getCharacterEncoding()); - } - - @Test - public void testContent() throws Exception { - assertEquals(0, request.getContentLength()); - assertNull(request.getInputStream()); - - byte[] data = new byte[] { 0x01,0x02,0x03 }; - request.setContent(data); - - assertEquals(data.length, request.getContentLength()); - assertArrayEquals(data, IOUtils.toByteArray(request.getInputStream())); - } - - @Test - public void testGetRequestDispatcher() { - MockRequestDispatcherFactory requestDispatcherFactory = mock(MockRequestDispatcherFactory.class); - RequestDispatcher requestDispatcher = mock(RequestDispatcher.class); - when(requestDispatcherFactory.getRequestDispatcher(any(Resource.class), any(RequestDispatcherOptions.class))).thenReturn(requestDispatcher); - when(requestDispatcherFactory.getRequestDispatcher(any(String.class), any(RequestDispatcherOptions.class))).thenReturn(requestDispatcher); - - request.setRequestDispatcherFactory(requestDispatcherFactory); - - assertSame(requestDispatcher, request.getRequestDispatcher("/path")); - assertSame(requestDispatcher, request.getRequestDispatcher("/path", new RequestDispatcherOptions())); - assertSame(requestDispatcher, request.getRequestDispatcher(resource)); - assertSame(requestDispatcher, request.getRequestDispatcher(resource, new RequestDispatcherOptions())); - } - - @Test(expected = IllegalStateException.class) - public void testGetRequestDispatcherWithoutFactory() { - request.getRequestDispatcher("/path"); - } - - @Test - public void testGetRemoteUser() { - assertNull(null, request.getRemoteUser()); - - request.setRemoteUser("admin"); - assertEquals("admin", request.getRemoteUser()); - } - - @Test - public void testGetRemoteAddr() throws Exception { - assertNull(null, request.getRemoteAddr()); - - request.setRemoteAddr("1.2.3.4"); - assertEquals("1.2.3.4", request.getRemoteAddr()); - } - - @Test - public void testGetRemoteHost() throws Exception { - assertNull(null, request.getRemoteHost()); - - request.setRemoteHost("host1"); - assertEquals("host1", request.getRemoteHost()); - } - - @Test - public void testGetRemotePort() throws Exception { - assertEquals(0, request.getRemotePort()); - - request.setRemotePort(1234); - assertEquals(1234, request.getRemotePort()); - } - } Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponseTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponseTest.java?rev=1724523&r1=1724522&r2=1724523&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponseTest.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponseTest.java Wed Jan 13 23:07:09 2016 @@ -18,20 +18,8 @@ */ package org.apache.sling.testing.mock.sling.servlet; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import java.util.Collection; -import java.util.Iterator; - -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.lang3.CharEncoding; import org.junit.Before; import org.junit.Test; @@ -48,129 +36,6 @@ public class MockSlingHttpServletRespons public void testContentTypeCharset() throws Exception { assertNull(response.getContentType()); assertNull(response.getCharacterEncoding()); - - response.setContentType("image/gif"); - assertEquals("image/gif", response.getContentType()); - assertNull(response.getCharacterEncoding()); - - response.setContentType("text/plain;charset=UTF-8"); - assertEquals("text/plain;charset=UTF-8", response.getContentType()); - assertEquals(CharEncoding.UTF_8, response.getCharacterEncoding()); - - response.setCharacterEncoding(CharEncoding.ISO_8859_1); - assertEquals("text/plain;charset=ISO-8859-1", response.getContentType()); - assertEquals(CharEncoding.ISO_8859_1, response.getCharacterEncoding()); - } - - @Test - public void testContentLength() throws Exception { - assertEquals(0, response.getContentLength()); - - response.setContentLength(55); - assertEquals(55, response.getContentLength()); - } - - @Test - public void testHeaders() throws Exception { - assertEquals(0, response.getHeaderNames().size()); - - response.addHeader("header1", "value1"); - response.addIntHeader("header2", 5); - response.addDateHeader("header3", System.currentTimeMillis()); - - assertEquals(3, response.getHeaderNames().size()); - assertTrue(response.containsHeader("header1")); - assertEquals("value1", response.getHeader("header1")); - assertEquals("5", response.getHeader("header2")); - assertNotNull(response.getHeader("header3")); - - response.setHeader("header1", "value2"); - response.addIntHeader("header2", 10); - - assertEquals(3, response.getHeaderNames().size()); - - Collection<String> header1Values = response.getHeaders("header1"); - assertEquals(1, header1Values.size()); - assertEquals("value2", header1Values.iterator().next()); - - Collection<String> header2Values = response.getHeaders("header2"); - assertEquals(2, header2Values.size()); - Iterator<String> header2Iterator = header2Values.iterator(); - assertEquals("5", header2Iterator.next()); - assertEquals("10", header2Iterator.next()); - - response.reset(); - assertEquals(0, response.getHeaderNames().size()); - } - - @Test - public void testRedirect() throws Exception { - response.sendRedirect("/location.html"); - assertEquals(HttpServletResponse.SC_MOVED_TEMPORARILY, response.getStatus()); - assertEquals("/location.html", response.getHeader("Location")); - } - - @Test - public void testSendError() throws Exception { - response.sendError(HttpServletResponse.SC_NOT_FOUND); - assertEquals(HttpServletResponse.SC_NOT_FOUND, response.getStatus()); - } - - @Test - public void testSetStatus() throws Exception { - assertEquals(HttpServletResponse.SC_OK, response.getStatus()); - - response.setStatus(HttpServletResponse.SC_BAD_GATEWAY); - assertEquals(HttpServletResponse.SC_BAD_GATEWAY, response.getStatus()); - - response.reset(); - assertEquals(HttpServletResponse.SC_OK, response.getStatus()); - } - - @Test - public void testWriteStringContent() throws Exception { - final String TEST_CONTENT = "Der Jodelkaiser äöüÃ⬠á áá»"; - response.setCharacterEncoding(CharEncoding.UTF_8); - response.getWriter().write(TEST_CONTENT); - assertEquals(TEST_CONTENT, response.getOutputAsString()); - - response.resetBuffer(); - assertEquals(0, response.getOutputAsString().length()); - } - - @Test - public void testWriteBinaryContent() throws Exception { - final byte[] TEST_DATA = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05 }; - response.getOutputStream().write(TEST_DATA); - assertArrayEquals(TEST_DATA, response.getOutput()); - - response.resetBuffer(); - assertEquals(0, response.getOutput().length); - } - - @Test - public void testIsCommitted() throws Exception { - assertFalse(response.isCommitted()); - response.flushBuffer(); - assertTrue(response.isCommitted()); - } - - @Test - public void testCookies() { - assertNull(response.getCookies()); - - response.addCookie(new Cookie("cookie1", "value1")); - response.addCookie(new Cookie("cookie2", "value2")); - - assertEquals("value1", response.getCookie("cookie1").getValue()); - - Cookie[] cookies = response.getCookies(); - assertEquals(2, cookies.length); - assertEquals("value1", cookies[0].getValue()); - assertEquals("value2", cookies[1].getValue()); - - response.reset(); - assertNull(response.getCookies()); } }
