github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/cmd/juju/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 "github.com/juju/cmd/cmdtesting" 8 "github.com/juju/errors" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/cmd/juju/backups" 13 "github.com/juju/juju/testing" 14 ) 15 16 type downloadSuite struct { 17 BaseBackupsSuite 18 subcommand *backups.DownloadCommand 19 } 20 21 var _ = gc.Suite(&downloadSuite{}) 22 23 func (s *downloadSuite) SetUpTest(c *gc.C) { 24 s.BaseBackupsSuite.SetUpTest(c) 25 s.subcommand = &backups.DownloadCommand{} 26 } 27 28 func (s *downloadSuite) TearDownTest(c *gc.C) { 29 filename := s.subcommand.ResolveFilename() 30 if s.subcommand.Filename == "" { 31 filename = s.filename 32 } 33 34 if s.filename == "" { 35 s.filename = filename 36 } else { 37 c.Check(filename, gc.Equals, s.filename) 38 } 39 40 s.BaseBackupsSuite.TearDownTest(c) 41 } 42 43 func (s *downloadSuite) setSuccess() *fakeAPIClient { 44 s.subcommand.ID = s.metaresult.ID 45 client := s.BaseBackupsSuite.setDownload() 46 return client 47 } 48 49 func (s *downloadSuite) TestHelp(c *gc.C) { 50 ctx, err := testing.RunCommand(c, s.command, "download", "--help") 51 c.Assert(err, jc.ErrorIsNil) 52 53 info := s.subcommand.Info() 54 expected := `(?sm)usage: juju backups download \[options] ` + info.Args + `$.*` 55 c.Check(testing.Stdout(ctx), gc.Matches, expected) 56 expected = "(?sm).*^purpose: " + info.Purpose + "$.*" 57 c.Check(testing.Stdout(ctx), gc.Matches, expected) 58 expected = "(?sm).*^" + info.Doc + "$.*" 59 c.Check(testing.Stdout(ctx), gc.Matches, expected) 60 } 61 62 func (s *downloadSuite) TestOkay(c *gc.C) { 63 s.setSuccess() 64 ctx := cmdtesting.Context(c) 65 err := s.subcommand.Run(ctx) 66 c.Check(err, jc.ErrorIsNil) 67 68 s.filename = "juju-backup-" + s.metaresult.ID + ".tar.gz" 69 s.checkStd(c, ctx, s.filename+"\n", "") 70 s.checkArchive(c) 71 } 72 73 func (s *downloadSuite) TestFilename(c *gc.C) { 74 s.setSuccess() 75 s.subcommand.Filename = "backup.tar.gz" 76 ctx := cmdtesting.Context(c) 77 err := s.subcommand.Run(ctx) 78 c.Check(err, jc.ErrorIsNil) 79 80 s.filename = "backup.tar.gz" 81 s.checkStd(c, ctx, s.filename+"\n", "") 82 s.checkArchive(c) 83 } 84 85 func (s *downloadSuite) TestError(c *gc.C) { 86 s.setFailure("failed!") 87 ctx := cmdtesting.Context(c) 88 err := s.subcommand.Run(ctx) 89 90 c.Check(errors.Cause(err), gc.ErrorMatches, "failed!") 91 }