github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/worker/uniter/runner/jujuc/resource-get_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package jujuc_test 5 6 import ( 7 "github.com/juju/cmd/v3" 8 "github.com/juju/cmd/v3/cmdtesting" 9 "github.com/juju/errors" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 "go.uber.org/mock/gomock" 13 gc "gopkg.in/check.v1" 14 15 "github.com/juju/juju/worker/uniter/runner/jujuc" 16 "github.com/juju/juju/worker/uniter/runner/jujuc/mocks" 17 ) 18 19 var _ = gc.Suite(&ResourceGetCmdSuite{}) 20 21 type ResourceGetCmdSuite struct { 22 testing.IsolationSuite 23 } 24 25 func (s *ResourceGetCmdSuite) TestInitNilArgs(c *gc.C) { 26 getCmd := jujuc.ResourceGetCmd{} 27 err := getCmd.Init(nil) 28 c.Check(err, gc.NotNil) 29 } 30 31 func (s *ResourceGetCmdSuite) TestInitTooFewArgs(c *gc.C) { 32 getCmd := jujuc.ResourceGetCmd{} 33 err := getCmd.Init([]string{}) 34 c.Check(err, gc.NotNil) 35 } 36 37 func (s *ResourceGetCmdSuite) TestInitTooManyArgs(c *gc.C) { 38 getCmd := jujuc.ResourceGetCmd{} 39 err := getCmd.Init([]string{"spam", "eggs"}) 40 c.Check(err, gc.NotNil) 41 } 42 43 func (s *ResourceGetCmdSuite) TestRun(c *gc.C) { 44 ctrl := gomock.NewController(c) 45 defer ctrl.Finish() 46 47 const expected = "/var/lib/juju/agents/unit-foo-1/resources/spam/a-file.tgz" 48 hctx := mocks.NewMockContext(ctrl) 49 hctx.EXPECT().DownloadResource("spam").Return(expected, nil) 50 51 com, err := jujuc.NewCommand(hctx, "resource-get") 52 c.Assert(err, jc.ErrorIsNil) 53 ctx := cmdtesting.Context(c) 54 code := cmd.Main(jujuc.NewJujucCommandWrappedForTest(com), ctx, []string{"spam"}) 55 c.Assert(code, gc.Equals, 0) 56 c.Check(cmdtesting.Stdout(ctx), gc.Equals, expected) 57 c.Assert(cmdtesting.Stderr(ctx), gc.Equals, "") 58 } 59 60 func (s *ResourceGetCmdSuite) TestRunDownloadFailure(c *gc.C) { 61 ctrl := gomock.NewController(c) 62 defer ctrl.Finish() 63 64 hctx := mocks.NewMockContext(ctrl) 65 hctx.EXPECT().DownloadResource("spam").Return("", errors.New("<failure>")) 66 67 com, err := jujuc.NewCommand(hctx, "resource-get") 68 c.Assert(err, jc.ErrorIsNil) 69 ctx := cmdtesting.Context(c) 70 code := cmd.Main(jujuc.NewJujucCommandWrappedForTest(com), ctx, []string{"spam"}) 71 c.Assert(code, gc.Equals, 1) 72 c.Check(cmdtesting.Stdout(ctx), gc.Equals, "") 73 c.Assert(cmdtesting.Stderr(ctx), gc.Equals, "ERROR could not download resource: <failure>\n") 74 }