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