7
. "launchpad.net/gocheck"
14
type HTTPTestSuite struct {
18
type HTTPSTestSuite struct {
22
func Test(t *testing.T) {
26
var _ = Suite(&HTTPTestSuite{})
27
var _ = Suite(&HTTPSTestSuite{HTTPSuite{UseTLS: true}})
29
type HelloHandler struct{}
31
func (h *HelloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
32
w.Header().Set("Content-Type", "text/plain")
34
w.Write([]byte("Hello World\n"))
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)
42
content, err := ioutil.ReadAll(response.Body)
45
c.Check(response.Status, Equals, "200 OK")
46
c.Check(response.StatusCode, Equals, 200)
47
c.Check(string(content), Equals, "Hello World\n")
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
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)
62
content, err := ioutil.ReadAll(response.Body)
65
c.Check(response.Status, Equals, "200 OK")
66
c.Check(response.StatusCode, Equals, 200)
67
c.Check(string(content), Equals, "Hello World\n")