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