aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetar Maymounkov <petarm@gmail.com>2010-02-01 11:23:38 -0800
committerRuss Cox <rsc@golang.org>2010-02-01 11:23:38 -0800
commit0d8797bf73977cb84042d59c9d76f3f58b4d7f46 (patch)
tree675a3ba9a69728a158b2cdfdac0d303c2673349f
parentbea730d1f9dc91904ecccb90247e9c14546fe98f (diff)
downloadgo-0d8797bf73977cb84042d59c9d76f3f58b4d7f46.tar.gz
go-0d8797bf73977cb84042d59c9d76f3f58b4d7f46.zip
http: test for ReadReqeust
R=rsc, rsc1 CC=golang-dev https://golang.org/cl/195068
-rw-r--r--src/pkg/http/readrequest_test.go96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/pkg/http/readrequest_test.go b/src/pkg/http/readrequest_test.go
new file mode 100644
index 0000000000..5438ba1735
--- /dev/null
+++ b/src/pkg/http/readrequest_test.go
@@ -0,0 +1,96 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package http
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "io"
+ "testing"
+)
+
+type reqTest struct {
+ Raw string
+ Req Request
+ Body string
+}
+
+var reqTests = []reqTest{
+ // Baseline test; All Request fields included for template use
+ reqTest{
+ "GET http://www.techcrunch.com/ HTTP/1.1\r\n" +
+ "Host: www.techcrunch.com\r\n" +
+ "User-Agent: Fake\r\n" +
+ "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" +
+ "Accept-Language: en-us,en;q=0.5\r\n" +
+ "Accept-Encoding: gzip,deflate\r\n" +
+ "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" +
+ "Keep-Alive: 300\r\n" +
+ "Content-Length: 7\r\n" +
+ "Proxy-Connection: keep-alive\r\n\r\n" +
+ "abcdef\n???",
+
+ Request{
+ Method: "GET",
+ RawURL: "http://www.techcrunch.com/",
+ URL: &URL{
+ Raw: "http://www.techcrunch.com/",
+ Scheme: "http",
+ RawPath: "//www.techcrunch.com/",
+ Authority: "www.techcrunch.com",
+ Userinfo: "",
+ Host: "www.techcrunch.com",
+ Path: "/",
+ RawQuery: "",
+ Fragment: "",
+ },
+ Proto: "HTTP/1.1",
+ ProtoMajor: 1,
+ ProtoMinor: 1,
+ Header: map[string]string{
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
+ "Accept-Language": "en-us,en;q=0.5",
+ "Accept-Encoding": "gzip,deflate",
+ "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
+ "Keep-Alive": "300",
+ "Proxy-Connection": "keep-alive",
+ "Content-Length": "7",
+ },
+ Close: false,
+ Host: "www.techcrunch.com",
+ Referer: "",
+ UserAgent: "Fake",
+ Form: map[string][]string{},
+ },
+
+ "abcdef\n",
+ },
+}
+
+func TestReadRequest(t *testing.T) {
+ for i := range reqTests {
+ tt := &reqTests[i]
+ var braw bytes.Buffer
+ braw.WriteString(tt.Raw)
+ req, err := ReadRequest(bufio.NewReader(&braw))
+ if err != nil {
+ t.Errorf("#%d: %s", i, err)
+ continue
+ }
+ rbody := req.Body
+ req.Body = nil
+ diff(t, fmt.Sprintf("#%d Request", i), req, &tt.Req)
+ var bout bytes.Buffer
+ if rbody != nil {
+ io.Copy(&bout, rbody)
+ rbody.Close()
+ }
+ body := bout.String()
+ if body != tt.Body {
+ t.Errorf("#%d: Body = %q want %q", i, body, tt.Body)
+ }
+ }
+}