github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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  	"strings"
     9  
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	"github.com/juju/juju/apiserver/params"
    14  	"github.com/juju/juju/state/backups"
    15  	"github.com/juju/juju/testing"
    16  )
    17  
    18  type downloadSuite struct {
    19  	baseSuite
    20  }
    21  
    22  var _ = gc.Suite(&downloadSuite{})
    23  
    24  func (s *downloadSuite) TestSuccessfulRequest(c *gc.C) {
    25  	store := backups.NewStorage(s.State)
    26  	defer store.Close()
    27  	backupsState := backups.NewBackups(store)
    28  
    29  	r := strings.NewReader("<compressed archive data>")
    30  	meta, err := backups.NewMetadataState(s.State, "0", "xenial")
    31  	c.Assert(err, jc.ErrorIsNil)
    32  	c.Assert(meta.CACert, gc.Equals, testing.CACert)
    33  	c.Assert(meta.CAPrivateKey, gc.Equals, testing.CAKey)
    34  	// The Add method requires the length to be set
    35  	// otherwise the content is assumed to have length 0.
    36  	meta.Raw.Size = int64(r.Len())
    37  	id, err := backupsState.Add(r, meta)
    38  	c.Assert(err, jc.ErrorIsNil)
    39  	resultArchive, err := s.client.Download(id)
    40  	c.Assert(err, jc.ErrorIsNil)
    41  
    42  	resultData, err := ioutil.ReadAll(resultArchive)
    43  	c.Assert(err, jc.ErrorIsNil)
    44  	c.Check(string(resultData), gc.Equals, "<compressed archive data>")
    45  }
    46  
    47  func (s *downloadSuite) TestFailedRequest(c *gc.C) {
    48  	resultArchive, err := s.client.Download("unknown")
    49  	c.Assert(err, gc.ErrorMatches, `GET https://.*/model/.*/backups: backup metadata "unknown" not found`)
    50  	c.Assert(err, jc.Satisfies, params.IsCodeNotFound)
    51  	c.Assert(resultArchive, gc.Equals, nil)
    52  }