RequestStatus status = new RequestStatus(); status.setQueryString(""); String uri; status.setMethod(statusArray[0].toUpperCase()); status.setProtocol(statusArray[2].trim()); status.setQueryString(uri.substring(questionMarkPosition + 1)); uri = uri.substring(0, questionMarkPosition); status.setUri(uri); return status;
/** * {@inheritDoc} */ @Override public String getMethod() { return status.getMethod(); }
/** * {@inheritDoc} */ @Override public String getProtocol() { return status.getProtocol(); }
@Test public void shouldParseStatusString() throws MalformedInputException { Parser<RequestStatus> requestStatusParser = new RequestStatusParser(); RequestStatus requestStatus = requestStatusParser.parse("GET /home?param1=ABC¶m2=123 HTTP/1.1"); assertThat(requestStatus.getMethod(), is("GET")); assertThat(requestStatus.getQueryString(), is("param1=ABC¶m2=123")); assertThat(requestStatus.getUri(), is("/home")); assertThat(requestStatus.getProtocol(), is("HTTP/1.1")); }
@Test public void shouldReturnCorrectValuesGetters() { requestStatus.setMethod(HttpServletRequest.METHOD_GET); httpServletRequestImpl.setAttribute("name", "value"); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getAttributeNames())), hasSize(1)); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getAttributeNames())), hasSize(0)); assertThat(httpServletRequestImpl.getRequestURI(), is(requestStatus.getUri())); assertThat(httpServletRequestImpl.getQueryString(), is(requestStatus.getQueryString())); assertThat(httpServletRequestImpl.getRequestedSessionId(), is(nullValue())); assertThat(httpServletRequestImpl.getContentLength(), is(-1)); assertThat(httpServletRequestImpl.getIntHeader("someInexistentHeader"), is(-1)); assertThat(httpServletRequestImpl.getInputStream(), is(inputStream)); assertThat(httpServletRequestImpl.getProtocol(), is(requestStatus.getProtocol())); assertThat(httpServletRequestImpl.getSession(), is(nullValue())); assertThat(httpServletRequestImpl.isMultipart(), is(true));
@Test public void shouldReturnPostRequestParametersMapOnPostMethod() { requestStatus.setMethod(HttpServletRequest.METHOD_POST); assertThat(httpServletRequestImpl.getPostParameter("postKey"), is("postValue")); assertThat(((Map<String, String>) httpServletRequestImpl.getParameterMap()), hasKey("postKey")); assertThat(((Map<String, String>) httpServletRequestImpl.getParameterMap()), not(hasKey("getKey"))); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), hasSize(1)); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), hasItems("postKey")); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), not(hasItems("getKey"))); }
/** * {@inheritDoc} */ @Override public String getRequestURI() { return status.getUri(); }
/** * {@inheritDoc} */ @Override public String getQueryString() { return status.getQueryString(); }
@Test public void shouldIgnoreTrailingCharacters() throws MalformedInputException { Parser<RequestStatus> requestStatusParser = new RequestStatusParser(); RequestStatus requestStatus = requestStatusParser.parse("GET /home?param1=ABC¶m2=123 HTTP/1.1\r\n"); assertThat(requestStatus.getMethod(), is("GET")); assertThat(requestStatus.getQueryString(), is("param1=ABC¶m2=123")); assertThat(requestStatus.getUri(), is("/home")); assertThat(requestStatus.getProtocol(), is("HTTP/1.1")); }
@Test public void shouldReturnGetRequestParametersMapOnGetMethod() { requestStatus.setMethod(HttpServletRequest.METHOD_GET); assertThat(httpServletRequestImpl.getParameter("getKey"), is("getValue")); assertThat(((Map<String, String>) httpServletRequestImpl.getParameterMap()), hasKey("getKey")); assertThat(((Map<String, String>) httpServletRequestImpl.getParameterMap()), not(hasKey("postKey"))); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), hasSize(1)); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), hasItems("getKey")); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), not(hasItems("postKey"))); }
/** * {@inheritDoc} */ @Override public StringBuilder getRequestURL() { StringBuilder url = new StringBuilder(); url.append(getScheme()).append("://").append(getHost()); int port = getServerPort(); if (port != HTTP_PORT && port != HTTPS_PORT) { url.append(':').append(port); } url.append(status.getUri()); return url; }
@Before public void setUp() { requestStatus = new RequestStatus(); requestStatus.setMethod(HttpServletRequest.METHOD_GET); requestStatus.setQueryString("a=1&b=2"); requestStatus.setUri("/someuri"); requestStatus.setProtocol("HTTP/1.1");
int uriLengthExceededWith = status.getUri().length() - URI_MAX_LENGTH; if (uriLengthExceededWith > 0) { throw new UriTooLongProtocolException("Uri length exceeded max length with" if (!isValidProtocol(status.getProtocol())) { throw new UnsupportedProtocolException("Protocol " + status.getProtocol() + " is not supported"); builder.withGetParameters(queryStringParser.parse(status.getQueryString())); } catch (MalformedInputException e) { .withInputStream(in) .withStatus(status) .withPathTranslated(status.getUri()) // TODO There is no way to make it work under Android .withPathInfo("") .withRemoteUser(null) .withCookies(getCookies(headers)); if (status.getMethod().equalsIgnoreCase(HttpServletRequest.METHOD_POST)) { try { handlePostRequest(builder, in, headers);
@Test public void shouldReturnPostRequestParametersMapOnPutMethod() { requestStatus.setMethod(HttpServletRequest.METHOD_PUT); assertThat(httpServletRequestImpl.getPostParameter("postKey"), is("postValue")); assertThat(((Map<String, String>) httpServletRequestImpl.getParameterMap()), hasKey("postKey")); assertThat(((Map<String, String>) httpServletRequestImpl.getParameterMap()), not(hasKey("getKey"))); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), hasSize(1)); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), hasItems("postKey")); assertThat((List<String>) (Collections.list(httpServletRequestImpl.getParameterNames())), not(hasItems("getKey"))); }