github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/api/backups/download_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package backups_test
     5  
     6  import (
     7  	"io/ioutil"
     8  	"net/http"
     9  
    10  	"github.com/juju/errors"
    11  	jc "github.com/juju/testing/checkers"
    12  	gc "gopkg.in/check.v1"
    13  
    14  	apiserverhttp "github.com/juju/juju/apiserver/http"
    15  	"github.com/juju/juju/apiserver/params"
    16  )
    17  
    18  type downloadSuite struct {
    19  	httpSuite
    20  }
    21  
    22  var _ = gc.Suite(&downloadSuite{})
    23  
    24  func (s *downloadSuite) setSuccess(c *gc.C, data string) {
    25  	body := []byte(data)
    26  	s.setResponse(c, http.StatusOK, body, apiserverhttp.CTypeRaw)
    27  }
    28  
    29  func (s *downloadSuite) TestSuccessfulRequest(c *gc.C) {
    30  	s.setSuccess(c, "<compressed archive data>")
    31  
    32  	resultArchive, err := s.client.Download("spam")
    33  	c.Assert(err, jc.ErrorIsNil)
    34  
    35  	resultData, err := ioutil.ReadAll(resultArchive)
    36  	c.Assert(err, jc.ErrorIsNil)
    37  	c.Check(string(resultData), gc.Equals, "<compressed archive data>")
    38  }
    39  
    40  func (s *downloadSuite) TestFailedRequest(c *gc.C) {
    41  	s.setFailure(c, "something went wrong!", http.StatusInternalServerError)
    42  
    43  	_, err := s.client.Download("spam")
    44  
    45  	c.Check(errors.Cause(err), gc.FitsTypeOf, &params.Error{})
    46  	c.Check(err, gc.ErrorMatches, "something went wrong!")
    47  }
    48  
    49  func (s *downloadSuite) TestErrorRequest(c *gc.C) {
    50  	s.setError(c, "something went wrong!", -1)
    51  
    52  	_, err := s.client.Download("spam")
    53  
    54  	c.Check(errors.Cause(err), gc.FitsTypeOf, &params.Error{})
    55  	c.Check(err, gc.ErrorMatches, "something went wrong!")
    56  }