diff --git a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFileUploadTest.java b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFileUploadTest.java index a774a6c..b0b7434 100644 --- a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFileUploadTest.java +++ b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFileUploadTest.java @@ -11,7 +11,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.xbib.net.NetworkClass; import org.xbib.net.URL; @@ -33,6 +32,7 @@ import org.xbib.net.http.server.netty.NettyHttpServerConfig; import org.xbib.net.http.server.route.BaseHttpRouter; import org.xbib.net.http.server.route.HttpRouter; import org.xbib.net.http.server.service.BaseHttpService; +import org.xbib.net.util.ByteBufferInputStream; import static org.junit.jupiter.api.Assertions.assertTrue; public class NettyHttpServerFileUploadTest { @@ -58,12 +58,30 @@ public class NettyHttpServerFileUploadTest { .setPath("/") .setMethod(HttpMethod.POST) .setHandler(ctx -> { - logger.log(Level.FINEST, "handler starting"); + HttpResponseStatus httpResponseStatus = HttpResponseStatus.NOT_FOUND; + List messages = ctx.getRequest().getMessages(); + logger.log(Level.INFO, "messages = " + messages.size()); + for (org.xbib.net.http.server.Message message : messages) { + logger.log(Level.INFO, "message = " + message); + if (message.getPath() != null) { + try (InputStream inputStream = Files.newInputStream(message.getPath()); + OutputStream outputStream = Files.newOutputStream(Paths.get("build/" + message.getName()))) { + inputStream.transferTo(outputStream); + httpResponseStatus = HttpResponseStatus.OK; + } + } + if (message.getByteBuffer() != null) { + try (InputStream inputStream = new ByteBufferInputStream(message.getByteBuffer()); + OutputStream outputStream = Files.newOutputStream(Paths.get("build/" + message.getName()))) { + inputStream.transferTo(outputStream); + httpResponseStatus = HttpResponseStatus.OK; + } + } + } String message = ctx.getRequest().getMessages().stream() .map(m -> StandardCharsets.UTF_8.decode(m.getByteBuffer())) .collect(Collectors.joining()); - - ctx.status(HttpResponseStatus.OK) + ctx.status(httpResponseStatus) .header(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.TEXT_PLAIN) .charset(StandardCharsets.UTF_8) .body("parameter = " + ctx.getRequest().getParameter().toString() + @@ -108,7 +126,7 @@ public class NettyHttpServerFileUploadTest { " status = " + resp.getStatus() + " header = " + resp.getHeaders() + " body = " + resp.getBodyAsChars(StandardCharsets.UTF_8)); - received.set(true); + received.set(resp.getStatus() == HttpResponseStatus.OK); }) .build(); client.execute(request).get().close(); @@ -117,7 +135,6 @@ public class NettyHttpServerFileUploadTest { } } - @Disabled @Test public void testLargeFileUpload() throws Exception { URL url = URL.from("http://localhost:8008/"); @@ -137,16 +154,27 @@ public class NettyHttpServerFileUploadTest { .setPath("/") .setMethod(HttpMethod.POST) .setHandler(ctx -> { + HttpResponseStatus httpResponseStatus = HttpResponseStatus.NOT_FOUND; List messages = ctx.getRequest().getMessages(); + logger.log(Level.INFO, "messages = " + messages.size()); for (org.xbib.net.http.server.Message message : messages) { + logger.log(Level.INFO, "message = " + message); if (message.getPath() != null) { try (InputStream inputStream = Files.newInputStream(message.getPath()); OutputStream outputStream = Files.newOutputStream(Paths.get("build/" + message.getName()))) { inputStream.transferTo(outputStream); + httpResponseStatus = HttpResponseStatus.OK; + } + } + if (message.getByteBuffer() != null) { + try (InputStream inputStream = new ByteBufferInputStream(message.getByteBuffer()); + OutputStream outputStream = Files.newOutputStream(Paths.get("build/" + message.getName()))) { + inputStream.transferTo(outputStream); + httpResponseStatus = HttpResponseStatus.OK; } } } - ctx.status(HttpResponseStatus.OK) + ctx.status(httpResponseStatus) .header(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.TEXT_PLAIN) .charset(StandardCharsets.UTF_8) .body("parameter = " + ctx.getRequest().getParameter().toString() + @@ -185,14 +213,14 @@ public class NettyHttpServerFileUploadTest { .addMessage(new Message("application/pdf", "base64", "test.pdf", - Paths.get("/home/joerg/3904846.pdf"), + Paths.get("src/test/resources/test.pdf"), StandardCharsets.US_ASCII)) .setResponseListener(resp -> { logger.log(Level.INFO, "got response:" + " status = " + resp.getStatus() + " header = " + resp.getHeaders() + " body = " + resp.getBodyAsChars(StandardCharsets.UTF_8)); - received.set(true); + received.set(resp.getStatus() == HttpResponseStatus.OK); }) .build(); client.execute(request).get().close(); diff --git a/net-http-server-netty/src/test/resources/test.pdf b/net-http-server-netty/src/test/resources/test.pdf new file mode 100644 index 0000000..f1c422f Binary files /dev/null and b/net-http-server-netty/src/test/resources/test.pdf differ