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 }