~ubuntu-branches/ubuntu/vivid/juju-core/vivid-updates

« back to all changes in this revision

Viewing changes to src/launchpad.net/goose/testing/httpsuite/httpsuite_test.go

  • Committer: Package Import Robot
  • Author(s): Curtis C. Hovey
  • Date: 2015-09-29 19:43:29 UTC
  • mfrom: (47.1.4 wily-proposed)
  • Revision ID: package-import@ubuntu.com-20150929194329-9y496tbic30hc7vp
Tags: 1.24.6-0ubuntu1~15.04.1
Backport of 1.24.6 from wily. (LP: #1500916, #1497087)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
package httpsuite
2
 
 
3
 
import (
4
 
        "crypto/tls"
5
 
        "crypto/x509"
6
 
        "io/ioutil"
7
 
        . "launchpad.net/gocheck"
8
 
        "net/http"
9
 
        "net/url"
10
 
        "reflect"
11
 
        "testing"
12
 
)
13
 
 
14
 
type HTTPTestSuite struct {
15
 
        HTTPSuite
16
 
}
17
 
 
18
 
type HTTPSTestSuite struct {
19
 
        HTTPSuite
20
 
}
21
 
 
22
 
func Test(t *testing.T) {
23
 
        TestingT(t)
24
 
}
25
 
 
26
 
var _ = Suite(&HTTPTestSuite{})
27
 
var _ = Suite(&HTTPSTestSuite{HTTPSuite{UseTLS: true}})
28
 
 
29
 
type HelloHandler struct{}
30
 
 
31
 
func (h *HelloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
32
 
        w.Header().Set("Content-Type", "text/plain")
33
 
        w.WriteHeader(200)
34
 
        w.Write([]byte("Hello World\n"))
35
 
}
36
 
 
37
 
func (s *HTTPTestSuite) TestHelloWorld(c *C) {
38
 
        s.Mux.Handle("/", &HelloHandler{})
39
 
        // fmt.Printf("Running HelloWorld\n")
40
 
        response, err := http.Get(s.Server.URL)
41
 
        c.Check(err, IsNil)
42
 
        content, err := ioutil.ReadAll(response.Body)
43
 
        response.Body.Close()
44
 
        c.Check(err, IsNil)
45
 
        c.Check(response.Status, Equals, "200 OK")
46
 
        c.Check(response.StatusCode, Equals, 200)
47
 
        c.Check(string(content), Equals, "Hello World\n")
48
 
}
49
 
 
50
 
func (s *HTTPSTestSuite) TestHelloWorldWithTLS(c *C) {
51
 
        s.Mux.Handle("/", &HelloHandler{})
52
 
        c.Check(s.Server.URL[:8], Equals, "https://")
53
 
        response, err := http.Get(s.Server.URL)
54
 
        // Default http.Get fails because the cert is self-signed
55
 
        c.Assert(err, NotNil)
56
 
        c.Assert(reflect.TypeOf(err.(*url.Error).Err), Equals, reflect.TypeOf(x509.UnknownAuthorityError{}))
57
 
        // Connect again with a Client that doesn't validate the cert
58
 
        insecureClient := &http.Client{Transport: &http.Transport{
59
 
                TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}}
60
 
        response, err = insecureClient.Get(s.Server.URL)
61
 
        c.Assert(err, IsNil)
62
 
        content, err := ioutil.ReadAll(response.Body)
63
 
        response.Body.Close()
64
 
        c.Check(err, IsNil)
65
 
        c.Check(response.Status, Equals, "200 OK")
66
 
        c.Check(response.StatusCode, Equals, 200)
67
 
        c.Check(string(content), Equals, "Hello World\n")
68
 
}