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 }