    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      http://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 * Unless required by applicable law or agreed to in writing, software
    012 * distributed under the License is distributed on an "AS IS" BASIS,
    013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 * See the License for the specific language governing permissions and
    015 * limitations under the License.
    016 */
    017package org.apache.commons.fileupload2.jakarta.servlet6;
    018
    019import java.io.BufferedReader;
    020import java.io.ByteArrayInputStream;
    021import java.io.IOException;
    022import java.io.InputStream;
    023import java.io.UnsupportedEncodingException;
    024import java.security.Principal;
    025import java.util.Collection;
    026import java.util.Enumeration;
    027import java.util.HashMap;
    028import java.util.Locale;
    029import java.util.Map;
    030
    031import org.apache.commons.fileupload2.core.AbstractFileUpload;
    032
    033import jakarta.servlet.AsyncContext;
    034import jakarta.servlet.DispatcherType;
    035import jakarta.servlet.ReadListener;
    036import jakarta.servlet.RequestDispatcher;
    037import jakarta.servlet.ServletConnection;
    038import jakarta.servlet.ServletContext;
    039import jakarta.servlet.ServletException;
    040import jakarta.servlet.ServletInputStream;
    041import jakarta.servlet.ServletRequest;
    042import jakarta.servlet.ServletResponse;
    043import jakarta.servlet.http.Cookie;
    044import jakarta.servlet.http.HttpServletRequest;
    045import jakarta.servlet.http.HttpServletResponse;
    046import jakarta.servlet.http.HttpSession;
    047import jakarta.servlet.http.HttpUpgradeHandler;
    048import jakarta.servlet.http.Part;
    049
    050/**
    051 * Test fixture for {@link HttpServletRequest}.
    052 */
    053public class JakartaMockHttpServletRequest implements HttpServletRequest {
    054
    055    private static final class MyServletInputStream extends ServletInputStream {
    056
    057        private final InputStream inputStream;
    058        private final int readLimit;
    059
    060        /**
    061         * Creates a new instance, which returns the given streams data.
    062         */
    063        MyServletInputStream(final InputStream inputStream, final int readLimit) {
    064            this.inputStream = inputStream;
    065            this.readLimit = readLimit;
    066        }
    067
    068        @Override
    069        public boolean isFinished() {
    070            return false;
    071        }
    072
    073        @Override
    074        public boolean isReady() {
    075            return false;
    076        }
    077
    078        @Override
    079        public int read() throws IOException {
    080            return inputStream.read();
    081        }
    082
    083        @Override
    084        public int read(final byte[] b, final int off, final int len) throws IOException {
    085            if (readLimit > 0) {
    086                return inputStream.read(b, off, Math.min(readLimit, len));
    087            }
    088            return inputStream.read(b, off, len);
    089        }
    090
    091        @Override
    092        public void setReadListener(final ReadListener readListener) {
    093
    094        }
    095
    096    }
    097
    098    private final InputStream requestInputStream;
    099
    100    private final long requestLength;
    101
    102    private final String contentType;
    103
    104    private final int readLimit;
    105
    106    private final Map<String, String> headers = new HashMap<>();
    107
    108    /**
    109     * Creates a new instance with the given request data and content type.
    110     */
    111    public JakartaMockHttpServletRequest(final byte[] requestData, final String contentType) {
    112        this(new ByteArrayInputStream(requestData), requestData.length, contentType, -1);
    113    }
    114
    115    /**
    116     * Creates a new instance with the given request data and content type.
    117     */
    118    public JakartaMockHttpServletRequest(final InputStream requestInputStream, final long requestLength, final String contentType, final int readLimit) {
    119        this.requestInputStream = requestInputStream;
    120        this.requestLength = requestLength;
    121        this.contentType = contentType;
    122        this.headers.put(AbstractFileUpload.CONTENT_TYPE, contentType);
    123        this.readLimit = readLimit;
    124    }
    125
    126    @Override
    127    public boolean authenticate(final HttpServletResponse response) throws IOException, ServletException {
    128        return false;
    129    }
    130
    131    @Override
    132    public String changeSessionId() {
    133        return null;
    134    }
    135
    136    @Override
    137    public AsyncContext getAsyncContext() {
    138        return null;
    139    }
    140
    141    /**
    142     * @see ServletRequest#getAttribute(String)
    143     */
    144    @Override
    145    public Object getAttribute(final String arg0) {
    146        return null;
    147    }
    148
    149    /**
    150     * @see ServletRequest#getAttributeNames()
    151     */
    152    @Override
    153    public Enumeration<String> getAttributeNames() {
    154        return null;
    155    }
    156
    157    /**
    158     * @see HttpServletRequest#getAuthType()
    159     */
    160    @Override
    161    public String getAuthType() {
    162        return null;
    163    }
    164
    165    /**
    166     * @see ServletRequest#getCharacterEncoding()
    167     */
    168    @Override
    169    public String getCharacterEncoding() {
    170        return null;
    171    }
    172
    173    /**
    174     * @see ServletRequest#getContentLength()
    175     */
    176    @Override
    177    public int getContentLength() {
    178        return requestInputStream != null ? Math.toIntExact(requestLength) : -1;
    179    }
    180
    181    @Override
    182    public long getContentLengthLong() {
    183        return 0;
    184    }
    185
    186    /**
    187     * @see ServletRequest#getContentType()
    188     */
    189    @Override
    190    public String getContentType() {
    191        return contentType;
    192    }
    193
    194    /**
    195     * @see HttpServletRequest#getContextPath()
    196     */
    197    @Override
    198    public String getContextPath() {
    199        return null;
    200    }
    201
    202    /**
    203     * @see HttpServletRequest#getCookies()
    204     */
    205    @Override
    206    public Cookie[] getCookies() {
    207        return null;
    208    }
    209
    210    /**
    211     * @see HttpServletRequest#getDateHeader(String)
    212     */
    213    @Override
    214    public long getDateHeader(final String arg0) {
    215        return 0;
    216    }
    217
    218    @Override
    219    public DispatcherType getDispatcherType() {
    220        return null;
    221    }
    222
    223    /**
    224     * @see HttpServletRequest#getHeader(String)
    225     */
    226    @Override
    227    public String getHeader(final String headerName) {
    228        return headers.get(headerName);
    229    }
    230
    231    /**
    232     * @see HttpServletRequest#getHeaderNames()
    233     */
    234    @Override
    235    public Enumeration<String> getHeaderNames() {
    236        // todo - implement
    237        return null;
    238    }
    239
    240    /**
    241     * @see HttpServletRequest#getHeaders(String)
    242     */
    243    @Override
    244    public Enumeration<String> getHeaders(final String arg0) {
    245        // todo - implement
    246        return null;
    247    }
    248
    249    /**
    250     * @see ServletRequest#getInputStream()
    251     */
    252    @Override
    253    public ServletInputStream getInputStream() throws IOException {
    254        return new MyServletInputStream(requestInputStream, readLimit);
    255    }
    256
    257    /**
    258     * @see HttpServletRequest#getIntHeader(String)
    259     */
    260    @Override
    261    public int getIntHeader(final String arg0) {
    262        return 0;
    263    }
    264
    265    /**
    266     * @see ServletRequest#getLocalAddr()
    267     */
    268    @Override
    269    @SuppressWarnings("javadoc") // This is a Servlet 2.4 method
    270    public String getLocalAddr() {
    271        return null;
    272    }
    273
    274    /**
    275     * @see ServletRequest#getLocale()
    276     */
    277    @Override
    278    public Locale getLocale() {
    279        return null;
    280    }
    281
    282    /**
    283     * @see ServletRequest#getLocales()
    284     */
    285    @Override
    286    public Enumeration<Locale> getLocales() {
    287        return null;
    288    }
    289
    290    /**
    291     * @see ServletRequest#getLocalName()
    292     */
    293    @Override
    294    @SuppressWarnings("javadoc") // This is a Servlet 2.4 method
    295    public String getLocalName() {
    296        return null;
    297    }
    298
    299    /**
    300     * @see ServletRequest#getLocalPort()
    301     */
    302    @Override
    303    @SuppressWarnings("javadoc") // This is a Servlet 2.4 method
    304    public int getLocalPort() {
    305        return 0;
    306    }
    307
    308    /**
    309     * @see HttpServletRequest#getMethod()
    310     */
    311    @Override
    312    public String getMethod() {
    313        return null;
    314    }
    315
    316    /**
    317     * @see ServletRequest#getParameter(String)
    318     */
    319    @Override
    320    public String getParameter(final String arg0) {
    321        return null;
    322    }
    323
    324    /**
    325     * @see ServletRequest#getParameterMap()
    326     */
    327    @Override
    328    public Map<String, String[]> getParameterMap() {
    329        return null;
    330    }
    331
    332    /**
    333     * @see ServletRequest#getParameterNames()
    334     */
    335    @Override
    336    public Enumeration<String> getParameterNames() {
    337        return null;
    338    }
    339
    340    /**
    341     * @see ServletRequest#getParameterValues(String)
    342     */
    343    @Override
    344    public String[] getParameterValues(final String arg0) {
    345        return null;
    346    }
    347
    348    @Override
    349    public Part getPart(final String name) throws IOException, ServletException {
    350        return null;
    351    }
    352
    353    @Override
    354    public Collection<Part> getParts() throws IOException, ServletException {
    355        return null;
    356    }
    357
    358    /**
    359     * @see HttpServletRequest#getPathInfo()
    360     */
    361    @Override
    362    public String getPathInfo() {
    363        return null;
    364    }
    365
    366    /**
    367     * @see HttpServletRequest#getPathTranslated()
    368     */
    369    @Override
    370    public String getPathTranslated() {
    371        return null;
    372    }
    373
    374    /**
    375     * @see ServletRequest#getProtocol()
    376     */
    377    @Override
    378    public String getProtocol() {
    379        return null;
    380    }
    381
    382    @Override
    383    public String getProtocolRequestId() {
    384        return null;
    385    }
    386
    387    /**
    388     * @see HttpServletRequest#getQueryString()
    389     */
    390    @Override
    391    public String getQueryString() {
    392        return null;
    393    }
    394
    395    /**
    396     * @see ServletRequest#getReader()
    397     */
    398    @Override
    399    public BufferedReader getReader() throws IOException {
    400        return null;
    401    }
    402
    403    /**
    404     * @see ServletRequest#getRemoteAddr()
    405     */
    406    @Override
    407    public String getRemoteAddr() {
    408        return null;
    409    }
    410
    411    /**
    412     * @see ServletRequest#getRemoteHost()
    413     */
    414    @Override
    415    public String getRemoteHost() {
    416        return null;
    417    }
    418
    419    /**
    420     * @see ServletRequest#getRemotePort()
    421     */
    422    @Override
    423    @SuppressWarnings("javadoc") // This is a Servlet 2.4 method
    424    public int getRemotePort() {
    425        return 0;
    426    }
    427
    428    /**
    429     * @see HttpServletRequest#getRemoteUser()
    430     */
    431    @Override
    432    public String getRemoteUser() {
    433        return null;
    434    }
    435
    436    /**
    437     * @see ServletRequest#getRequestDispatcher(String)
    438     */
    439    @Override
    440    public RequestDispatcher getRequestDispatcher(final String arg0) {
    441        return null;
    442    }
    443
    444    /**
    445     * @see HttpServletRequest#getRequestedSessionId()
    446     */
    447    @Override
    448    public String getRequestedSessionId() {
    449        return null;
    450    }
    451
    452    @Override
    453    public String getRequestId() {
    454        return null;
    455    }
    456
    457    /**
    458     * @see HttpServletRequest#getRequestURI()
    459     */
    460    @Override
    461    public String getRequestURI() {
    462        return null;
    463    }
    464
    465    /**
    466     * @see HttpServletRequest#getRequestURL()
    467     */
    468    @Override
    469    public StringBuffer getRequestURL() {
    470        return null;
    471    }
    472
    473    /**
    474     * @see ServletRequest#getScheme()
    475     */
    476    @Override
    477    public String getScheme() {
    478        return null;
    479    }
    480
    481    /**
    482     * @see ServletRequest#getServerName()
    483     */
    484    @Override
    485    public String getServerName() {
    486        return null;
    487    }
    488
    489    /**
    490     * @see ServletRequest#getServerPort()
    491     */
    492    @Override
    493    public int getServerPort() {
    494        return 0;
    495    }
    496
    497    @Override
    498    public ServletConnection getServletConnection() {
    499        return null;
    500    }
    501
    502    @Override
    503    public ServletContext getServletContext() {
    504        return null;
    505    }
    506
    507    /**
    508     * @see HttpServletRequest#getServletPath()
    509     */
    510    @Override
    511    public String getServletPath() {
    512        return null;
    513    }
    514
    515    /**
    516     * @see HttpServletRequest#getSession()
    517     */
    518    @Override
    519    public HttpSession getSession() {
    520        return null;
    521    }
    522
    523    /**
    524     * @see HttpServletRequest#getSession(boolean)
    525     */
    526    @Override
    527    public HttpSession getSession(final boolean arg0) {
    528        return null;
    529    }
    530
    531    /**
    532     * @see HttpServletRequest#getUserPrincipal()
    533     */
    534    @Override
    535    public Principal getUserPrincipal() {
    536        return null;
    537    }
    538
    539    @Override
    540    public boolean isAsyncStarted() {
    541        return false;
    542    }
    543
    544    @Override
    545    public boolean isAsyncSupported() {
    546        return false;
    547    }
    548
    549    /**
    550     * @see HttpServletRequest#isRequestedSessionIdFromCookie()
    551     */
    552    @Override
    553    public boolean isRequestedSessionIdFromCookie() {
    554        return false;
    555    }
    556
    557    /**
    558     * @see HttpServletRequest#isRequestedSessionIdFromURL()
    559     */
    560    @Override
    561    public boolean isRequestedSessionIdFromURL() {
    562        return false;
    563    }
    564
    565    /**
    566     * @see HttpServletRequest#isRequestedSessionIdValid()
    567     */
    568    @Override
    569    public boolean isRequestedSessionIdValid() {
    570        return false;
    571    }
    572
    573    /**
    574     * @see ServletRequest#isSecure()
    575     */
    576    @Override
    577    public boolean isSecure() {
    578        return false;
    579    }
    580
    581    /**
    582     * @see HttpServletRequest#isUserInRole(String)
    583     */
    584    @Override
    585    public boolean isUserInRole(final String arg0) {
    586        return false;
    587    }
    588
    589    @Override
    590    public void login(final String username, final String password) throws ServletException {
    591
    592    }
    593
    594    @Override
    595    public void logout() throws ServletException {
    596
    597    }
    598
    599    /**
    600     * @see ServletRequest#removeAttribute(String)
    601     */
    602    @Override
    603    public void removeAttribute(final String arg0) {
    604    }
    605
    606    /**
    607     * @see ServletRequest#setAttribute(String, Object)
    608     */
    609    @Override
    610    public void setAttribute(final String arg0, final Object arg1) {
    611    }
    612
    613    /**
    614     * @see ServletRequest#setCharacterEncoding(String)
    615     */
    616    @Override
    617    public void setCharacterEncoding(final String arg0) throws UnsupportedEncodingException {
    618    }
    619
    620    @Override
    621    public AsyncContext startAsync() throws IllegalStateException {
    622        return null;
    623    }
    624
    625    @Override
    626    public AsyncContext startAsync(final ServletRequest servletRequest, final ServletResponse servletResponse) throws IllegalStateException {
    627        return null;
    628    }
    629
    630    @Override
    631    public <T extends HttpUpgradeHandler> T upgrade(final Class<T> handlerClass) throws IOException, ServletException {
    632        return null;
    633    }
    634
    635}