diff options
Diffstat (limited to 'simple/simple-http/src/test/java/org/simpleframework/http/core/TransferTest.java')
-rw-r--r-- | simple/simple-http/src/test/java/org/simpleframework/http/core/TransferTest.java | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/simple/simple-http/src/test/java/org/simpleframework/http/core/TransferTest.java b/simple/simple-http/src/test/java/org/simpleframework/http/core/TransferTest.java new file mode 100644 index 0000000..0d0d73d --- /dev/null +++ b/simple/simple-http/src/test/java/org/simpleframework/http/core/TransferTest.java @@ -0,0 +1,195 @@ +package org.simpleframework.http.core; + +import java.io.IOException; + +import org.simpleframework.http.core.Conversation; +import org.simpleframework.http.core.ResponseEncoder; + +import junit.framework.TestCase; + +public class TransferTest extends TestCase { + + public void testTransferEncoding() throws IOException { + MockChannel channel = new MockChannel(null); + MockObserver monitor = new MockObserver(); + MockRequest request = new MockRequest(); + MockResponse response = new MockResponse(); + Conversation support = new Conversation(request, response); + ResponseEncoder transfer = new ResponseEncoder(monitor, response, support, channel); + + // Start a HTTP/1.1 conversation + request.setMajor(1); + request.setMinor(1); + transfer.start(); + + assertEquals(response.getValue("Connection"), "keep-alive"); + assertEquals(response.getValue("Transfer-Encoding"), "chunked"); + assertEquals(response.getValue("Content-Length"), null); + assertEquals(response.getContentLength(), -1); + assertTrue(response.isCommitted()); + + channel = new MockChannel(null); + monitor = new MockObserver(); + request = new MockRequest(); + response = new MockResponse(); + support = new Conversation(request, response); + transfer = new ResponseEncoder(monitor, response, support, channel); + + // Start a HTTP/1.0 conversation + request.setMajor(1); + request.setMinor(0); + transfer.start(); + + assertEquals(response.getValue("Connection"), "close"); + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getValue("Content-Length"), null); + assertEquals(response.getContentLength(), -1); + assertTrue(response.isCommitted()); + } + + public void testContentLength() throws IOException { + MockChannel channel = new MockChannel(null); + MockObserver monitor = new MockObserver(); + MockRequest request = new MockRequest(); + MockResponse response = new MockResponse(); + Conversation support = new Conversation(request, response); + ResponseEncoder transfer = new ResponseEncoder(monitor, response, support, channel); + + // Start a HTTP/1.1 conversation + request.setMajor(1); + request.setMinor(1); + transfer.start(1024); + + assertEquals(response.getValue("Connection"), "keep-alive"); + assertEquals(response.getValue("Content-Length"), "1024"); + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getContentLength(), 1024); + assertTrue(response.isCommitted()); + + channel = new MockChannel(null); + monitor = new MockObserver(); + request = new MockRequest(); + response = new MockResponse(); + support = new Conversation(request, response); + transfer = new ResponseEncoder(monitor, response, support, channel); + + // Start a HTTP/1.0 conversation + request.setMajor(1); + request.setMinor(0); + transfer.start(1024); + + assertEquals(response.getValue("Connection"), "close"); + assertEquals(response.getValue("Content-Length"), "1024"); + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getContentLength(), 1024); + assertTrue(response.isCommitted()); + + channel = new MockChannel(null); + monitor = new MockObserver(); + request = new MockRequest(); + response = new MockResponse(); + support = new Conversation(request, response); + transfer = new ResponseEncoder(monitor, response, support, channel); + + // Start a HTTP/1.0 conversation + request.setMajor(1); + request.setMinor(1); + response.setValue("Content-Length", "2048"); + response.setValue("Connection", "close"); + response.setValue("Transfer-Encoding", "chunked"); + transfer.start(1024); + + assertEquals(response.getValue("Connection"), "close"); + assertEquals(response.getValue("Content-Length"), "1024"); // should be 1024 + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getContentLength(), 1024); + assertTrue(response.isCommitted()); + } + + public void testHeadMethodWithConnectionClose() throws IOException { + MockChannel channel = new MockChannel(null); + MockObserver monitor = new MockObserver(); + MockRequest request = new MockRequest(); + MockResponse response = new MockResponse(); + Conversation support = new Conversation(request, response); + ResponseEncoder transfer = new ResponseEncoder(monitor, response, support, channel); + + request.setMajor(1); + request.setMinor(0); + request.setMethod("HEAD"); + request.setValue("Connection", "keep-alive"); + response.setContentLength(1024); + response.setValue("Connection", "close"); + + transfer.start(); + + assertEquals(response.getValue("Connection"), "close"); + assertEquals(response.getValue("Content-Length"), "1024"); // should be 1024 + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getContentLength(), 1024); + } + + public void testHeadMethodWithSomethingWritten() throws IOException { + MockChannel channel = new MockChannel(null); + MockObserver monitor = new MockObserver(); + MockRequest request = new MockRequest(); + MockResponse response = new MockResponse(); + Conversation support = new Conversation(request, response); + ResponseEncoder transfer = new ResponseEncoder(monitor, response, support, channel); + + request.setMajor(1); + request.setMinor(1); + request.setMethod("HEAD"); + request.setValue("Connection", "keep-alive"); + response.setContentLength(1024); + + transfer.start(512); + + assertEquals(response.getValue("Connection"), "keep-alive"); + assertEquals(response.getValue("Content-Length"), "512"); // should be 512 + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getContentLength(), 512); + } + + public void testHeadMethodWithNoContentLength() throws IOException { + MockChannel channel = new MockChannel(null); + MockObserver monitor = new MockObserver(); + MockRequest request = new MockRequest(); + MockResponse response = new MockResponse(); + Conversation support = new Conversation(request, response); + ResponseEncoder transfer = new ResponseEncoder(monitor, response, support, channel); + + request.setMajor(1); + request.setMinor(1); + request.setMethod("HEAD"); + request.setValue("Connection", "keep-alive"); + + transfer.start(); + + assertEquals(response.getValue("Connection"), "keep-alive"); + assertEquals(response.getValue("Content-Length"), null); + assertEquals(response.getValue("Transfer-Encoding"), "chunked"); + assertEquals(response.getContentLength(), -1); + } + + public void testHeadMethodWithNoContentLengthAndSomethingWritten() throws IOException { + MockChannel channel = new MockChannel(null); + MockObserver monitor = new MockObserver(); + MockRequest request = new MockRequest(); + MockResponse response = new MockResponse(); + Conversation support = new Conversation(request, response); + ResponseEncoder transfer = new ResponseEncoder(monitor, response, support, channel); + + request.setMajor(1); + request.setMinor(1); + request.setMethod("HEAD"); + request.setValue("Connection", "keep-alive"); + + transfer.start(32); + + assertEquals(response.getValue("Connection"), "keep-alive"); + assertEquals(response.getValue("Content-Length"), "32"); + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getContentLength(), 32); + } +} |