~chipaca/ubuntu-push/gsettings

« back to all changes in this revision

Viewing changes to http13client/httptest/recorder.go

  • Committer: Samuele Pedroni (Canonical Services Ltd.)
  • Date: 2014-03-19 20:20:19 UTC
  • mto: This revision was merged to the branch mainline in revision 82.
  • Revision ID: samuele.pedroni@canonical.com-20140319202019-p0w8krshj1098f82
grab go 1.3 dev net/http and massage it so that the test run on 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2011 The Go Authors. All rights reserved.
 
2
// Use of this source code is governed by a BSD-style
 
3
// license that can be found in the LICENSE file.
 
4
 
 
5
// Package httptest provides utilities for HTTP testing.
 
6
package httptest
 
7
 
 
8
import (
 
9
        "bytes"
 
10
        "launchpad.net/ubuntu-push/http13client"
 
11
)
 
12
 
 
13
// ResponseRecorder is an implementation of http.ResponseWriter that
 
14
// records its mutations for later inspection in tests.
 
15
type ResponseRecorder struct {
 
16
        Code      int           // the HTTP response code from WriteHeader
 
17
        HeaderMap http.Header   // the HTTP response headers
 
18
        Body      *bytes.Buffer // if non-nil, the bytes.Buffer to append written data to
 
19
        Flushed   bool
 
20
 
 
21
        wroteHeader bool
 
22
}
 
23
 
 
24
// NewRecorder returns an initialized ResponseRecorder.
 
25
func NewRecorder() *ResponseRecorder {
 
26
        return &ResponseRecorder{
 
27
                HeaderMap: make(http.Header),
 
28
                Body:      new(bytes.Buffer),
 
29
                Code:      200,
 
30
        }
 
31
}
 
32
 
 
33
// DefaultRemoteAddr is the default remote address to return in RemoteAddr if
 
34
// an explicit DefaultRemoteAddr isn't set on ResponseRecorder.
 
35
const DefaultRemoteAddr = "1.2.3.4"
 
36
 
 
37
// Header returns the response headers.
 
38
func (rw *ResponseRecorder) Header() http.Header {
 
39
        m := rw.HeaderMap
 
40
        if m == nil {
 
41
                m = make(http.Header)
 
42
                rw.HeaderMap = m
 
43
        }
 
44
        return m
 
45
}
 
46
 
 
47
// Write always succeeds and writes to rw.Body, if not nil.
 
48
func (rw *ResponseRecorder) Write(buf []byte) (int, error) {
 
49
        if !rw.wroteHeader {
 
50
                rw.WriteHeader(200)
 
51
        }
 
52
        if rw.Body != nil {
 
53
                rw.Body.Write(buf)
 
54
        }
 
55
        return len(buf), nil
 
56
}
 
57
 
 
58
// WriteHeader sets rw.Code.
 
59
func (rw *ResponseRecorder) WriteHeader(code int) {
 
60
        if !rw.wroteHeader {
 
61
                rw.Code = code
 
62
        }
 
63
        rw.wroteHeader = true
 
64
}
 
65
 
 
66
// Flush sets rw.Flushed to true.
 
67
func (rw *ResponseRecorder) Flush() {
 
68
        if !rw.wroteHeader {
 
69
                rw.WriteHeader(200)
 
70
        }
 
71
        rw.Flushed = true
 
72
}