github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/api/http_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package api_test 5 6 import ( 7 "net/http" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/api" 13 apihttp "github.com/juju/juju/api/http" 14 apihttptesting "github.com/juju/juju/api/http/testing" 15 jujutesting "github.com/juju/juju/juju/testing" 16 ) 17 18 type httpSuite struct { 19 apihttptesting.HTTPSuite 20 jujutesting.JujuConnSuite 21 } 22 23 var _ = gc.Suite(&httpSuite{}) 24 25 func (s *httpSuite) SetUpTest(c *gc.C) { 26 s.HTTPSuite.SetUpTest(c) 27 s.JujuConnSuite.SetUpTest(c) 28 29 // This determines the client used in SendHTTPRequest(). 30 s.PatchValue(api.NewHTTPClient, 31 func(*api.State) apihttp.HTTPClient { 32 return s.Fake 33 }, 34 ) 35 } 36 37 func (s *httpSuite) TestNewHTTPRequestSuccess(c *gc.C) { 38 req, err := s.APIState.NewHTTPRequest("GET", "somefacade") 39 c.Assert(err, jc.ErrorIsNil) 40 41 s.CheckRequest(c, req, "GET", "somefacade") 42 } 43 44 func (s *httpSuite) TestNewHTTPClientCorrectTransport(c *gc.C) { 45 httpClient := s.APIState.NewHTTPClient() 46 47 c.Assert(httpClient.Transport, gc.NotNil) 48 c.Assert(httpClient.Transport, gc.FitsTypeOf, (*http.Transport)(nil)) 49 config := httpClient.Transport.(*http.Transport).TLSClientConfig 50 51 c.Check(config.RootCAs, gc.NotNil) 52 } 53 54 func (s *httpSuite) TestNewHTTPClientValidatesCert(c *gc.C) { 55 req, err := s.APIState.NewHTTPRequest("GET", "somefacade") 56 httpClient := s.APIState.NewHTTPClient() 57 resp, err := httpClient.Do(req) 58 c.Assert(err, jc.ErrorIsNil) 59 60 c.Check(resp.StatusCode, gc.Equals, http.StatusNotFound) 61 } 62 63 func (s *httpSuite) TestSendHTTPRequestSuccess(c *gc.C) { 64 req, resp, err := s.APIState.SendHTTPRequest("somefacade", nil) 65 c.Assert(err, jc.ErrorIsNil) 66 67 s.Fake.CheckCalled(c, req, resp) 68 }