private DirectoryIndexDescriptor loadDirectoryIndexResource(final String path) { String normalizedDirectoryPath = pathHelper.getNormalizedDirectoryPath(path); for (String index : serverConfig.getDirectoryIndex()) { String directoryIndexPath = normalizedDirectoryPath + index; ResourceProvider resourceProvider = getResourceProvider(directoryIndexPath); if (resourceProvider != null) { return new DirectoryIndexDescriptor(resourceProvider, directoryIndexPath); } } return null; }
/** * {@inheritDoc} */ @Override public String getContentType() { return headers.getHeader(Headers.HEADER_CONTENT_TYPE); }
/** * {@inheritDoc} */ @Override public void setHeader(final String name, final String value) { headers.setHeader(name, value); }
@Test public void shouldReturn411LengthRequiredForPostMultiPart() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .method("POST", "/example/") .withHeader(Headers.HEADER_CONTENT_TYPE, "multipart/mixed; boundary=s9xksnd72SSHu") .withCloseConnection(); assertResponsesWithHttpCode(requestBuilder, 411); }
@Test public void shouldReturn505HTTPVersionNotSupported() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .get("SomeUrl.html") .withHost(HOST + ":" + PORT) .withProtocol("HTTP/9.0") .withCloseConnection(); assertResponsesWithHttpCode(requestBuilder, 505); }
@Test public void shouldReturn414StatusTooLong() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .get(getTooLongUri(2047)) .withCloseConnection() .withProtocol("HTTTTTTTTTTTTTP/4.4"); assertResponsesWithHttpCode(requestBuilder, 414); }
@Test public void shouldReturn403ForbiddenOnIllegalPath() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .get("../../../index.html") .withCloseConnection(); assertResponsesWithHttpCode(requestBuilder, 403); }
/** * {@inheritDoc} */ @Override public String getMethod() { return status.getMethod(); }
/** * Makes sure the last character is a slash. * * @param path * @return */ public String getNormalizedDirectoryPath(final String path) { if (isDirectoryPath(path)) { return path; } return path + SLASH; }
/** * {@inheritDoc} */ @Override public String getRequestURI() { return status.getUri(); }
/** * {@inheritDoc} */ @Override public String getQueryString() { return status.getQueryString(); }
/** * {@inheritDoc} */ @Override public String getProtocol() { return status.getProtocol(); }
private static ServerConfig getServerConfig() { return (new DefaultServerConfigFactory() { @Override protected String getBasePath() { return getTempPath(); } @Override protected String getTempPath() { return tempDirectory; } }).getServerConfig(); }
@Test public void shouldReturn400WhenLengthMalformedForPost() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .method("POST", "/example/") .withHeader(Headers.HEADER_CONTENT_LENGTH, "Illegal value") .withCloseConnection(); assertResponsesWithHttpCode(requestBuilder, 400); }
@Test public void shouldReturn400OnMalformedStatus() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .get(null) .withCloseConnection(); assertResponsesWithHttpCode(requestBuilder, 400); }
/** * {@inheritDoc} */ @Override public void setContentType(final String contentType) { headers.setHeader(Headers.HEADER_CONTENT_TYPE, contentType); }
/** * {@inheritDoc} */ @Override public String getHeader(final String name) { return headers.getHeader(name); }
@Test public void shouldReturn411LengthRequiredForPost() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .method("POST", "/example/") .withCloseConnection(); assertResponsesWithHttpCode(requestBuilder, 411); }
@Test public void shouldReturn403ForbiddenOnBlockedByFilter() throws IOException { RequestBuilder requestBuilder = RequestBuilder.defaultBuilder() .get("/example/secured/ForbiddenByFilter") .withCloseConnection(); assertResponsesWithHttpCode(requestBuilder, 403); }
/** * {@inheritDoc} */ @Override public String getContentType() { return headers.getHeader(Headers.HEADER_CONTENT_TYPE); }