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  }