From 224aecb81d1ff674598e897af01e8b65ebf31017 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 17 Jan 2016 00:30:13 +0200 Subject: [PATCH] Added explicit test for keepalive and non-keepalive HTTP/1.0 response --- header_test.go | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/header_test.go b/header_test.go index 79d8ed1..fa1385a 100644 --- a/header_test.go +++ b/header_test.go @@ -10,13 +10,34 @@ import ( "testing" ) -func TestRequestSetByteRange(t *testing.T) { - testRequestSetByteRange(t, 0, 10, "bytes=0-10") - testRequestSetByteRange(t, 123, -1, "bytes=123-") - testRequestSetByteRange(t, -234, 58349, "bytes=-234") +func TestResponseHeaderOldVersion(t *testing.T) { + var h ResponseHeader + + s := "HTTP/1.0 200 OK\r\nContent-Length: 5\r\nContent-Type: aaa\r\n\r\n12345" + s += "HTTP/1.0 200 OK\r\nContent-Length: 2\r\nContent-Type: ass\r\nConnection: keep-alive\r\n\r\n42" + br := bufio.NewReader(bytes.NewBufferString(s)) + if err := h.Read(br); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !h.ConnectionClose() { + t.Fatalf("expecting 'Connection: close' for the response with old http protocol") + } + + if err := h.Read(br); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if h.ConnectionClose() { + t.Fatalf("unexpected 'Connection: close' for keep-alive response with old http protocol") + } } -func testRequestSetByteRange(t *testing.T, startPos, endPos int, expectedV string) { +func TestRequestHeaderSetByteRange(t *testing.T) { + testRequestHeaderSetByteRange(t, 0, 10, "bytes=0-10") + testRequestHeaderSetByteRange(t, 123, -1, "bytes=123-") + testRequestHeaderSetByteRange(t, -234, 58349, "bytes=-234") +} + +func testRequestHeaderSetByteRange(t *testing.T, startPos, endPos int, expectedV string) { var h RequestHeader h.SetByteRange(startPos, endPos) v := h.Peek("Range") @@ -25,12 +46,12 @@ func testRequestSetByteRange(t *testing.T, startPos, endPos int, expectedV strin } } -func TestResponseSetContentRange(t *testing.T) { - testResponseSetContentRange(t, 0, 0, 1, "bytes 0-0/1") - testResponseSetContentRange(t, 123, 456, 789, "bytes 123-456/789") +func TestResponseHeaderSetContentRange(t *testing.T) { + testResponseHeaderSetContentRange(t, 0, 0, 1, "bytes 0-0/1") + testResponseHeaderSetContentRange(t, 123, 456, 789, "bytes 123-456/789") } -func testResponseSetContentRange(t *testing.T, startPos, endPos, contentLength int, expectedV string) { +func testResponseHeaderSetContentRange(t *testing.T, startPos, endPos, contentLength int, expectedV string) { var h ResponseHeader h.SetContentRange(startPos, endPos, contentLength) v := h.Peek("Content-Range")