From 0d8797bf73977cb84042d59c9d76f3f58b4d7f46 Mon Sep 17 00:00:00 2001
From: Petar Maymounkov <petarm@gmail.com>
Date: Mon, 1 Feb 2010 11:23:38 -0800
Subject: [PATCH] http: test for ReadReqeust

R=rsc, rsc1
CC=golang-dev
https://golang.org/cl/195068
---
 src/pkg/http/readrequest_test.go | 96 ++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 src/pkg/http/readrequest_test.go

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)
+		}
+	}
+}
-- 
2.30.9