4
. "launchpad.net/gocheck"
5
"launchpad.net/goose/testing/httpsuite"
10
func Test(t *testing.T) {
14
type HTTPClientTestSuite struct {
18
var _ = Suite(&HTTPClientTestSuite{})
20
func (s *HTTPClientTestSuite) TestCreateHeaders(c *C) {
21
emptyHeaders := http.Header{}
22
headers := createHeaders(emptyHeaders, "content-type")
23
contentTypes := []string{"content-type"}
24
c.Assert(headers, DeepEquals,
25
http.Header{"Content-Type": contentTypes, "Accept": contentTypes, "User-Agent": []string{gooseAgent()}})
26
c.Assert(emptyHeaders, DeepEquals, http.Header{})
29
func (s *HTTPClientTestSuite) TestCreateHeadersCopiesSupplied(c *C) {
30
initialHeaders := make(http.Header)
31
initialHeaders["Foo"] = []string{"Bar"}
32
contentType := contentTypeJSON
33
contentTypes := []string{contentType}
34
headers := createHeaders(initialHeaders, contentType)
35
// it should not change the headers passed in
36
c.Assert(initialHeaders, DeepEquals, http.Header{"Foo": []string{"Bar"}})
37
// The initial headers should be in the output
38
c.Assert(headers, DeepEquals,
39
http.Header{"Foo": []string{"Bar"}, "Content-Type": contentTypes, "Accept": contentTypes, "User-Agent": []string{gooseAgent()}})
42
func (s *HTTPClientTestSuite) setupLoopbackRequest() (*http.Header, *Client) {
43
headers := http.Header{}
44
handler := func(resp http.ResponseWriter, req *http.Request) {
46
resp.Header().Add("Content-Length", "0")
47
resp.WriteHeader(http.StatusNoContent)
50
s.Mux.HandleFunc("/", handler)
51
client := New(*http.DefaultClient, nil, "")
52
return &headers, client
55
func (s *HTTPClientTestSuite) TestBinaryRequestSetsUserAgent(c *C) {
56
headers, client := s.setupLoopbackRequest()
57
req := &RequestData{ExpectedStatus: []int{http.StatusNoContent}}
58
err := client.BinaryRequest("POST", s.Server.URL, req)
60
agent := headers.Get("User-Agent")
61
c.Check(agent, Not(Equals), "")
62
c.Check(agent, Equals, gooseAgent())
65
func (s *HTTPClientTestSuite) TestJSONRequestSetsUserAgent(c *C) {
66
headers, client := s.setupLoopbackRequest()
67
req := &RequestData{ExpectedStatus: []int{http.StatusNoContent}}
68
err := client.JsonRequest("POST", s.Server.URL, req)
70
agent := headers.Get("User-Agent")
71
c.Check(agent, Not(Equals), "")
72
c.Check(agent, Equals, gooseAgent())