github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/cachedimages/remove_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for info. 3 4 package cachedimages_test 5 6 import ( 7 "github.com/juju/cmd" 8 "github.com/juju/cmd/cmdtesting" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/cmd/juju/cachedimages" 13 "github.com/juju/juju/jujuclient/jujuclienttesting" 14 "github.com/juju/juju/testing" 15 ) 16 17 type removeImageCommandSuite struct { 18 testing.FakeJujuXDGDataHomeSuite 19 mockAPI *fakeImageRemoveAPI 20 } 21 22 var _ = gc.Suite(&removeImageCommandSuite{}) 23 24 type fakeImageRemoveAPI struct { 25 kind string 26 series string 27 arch string 28 } 29 30 func (*fakeImageRemoveAPI) Close() error { 31 return nil 32 } 33 34 func (f *fakeImageRemoveAPI) DeleteImage(kind, series, arch string) error { 35 f.kind = kind 36 f.series = series 37 f.arch = arch 38 return nil 39 } 40 41 func (s *removeImageCommandSuite) SetUpTest(c *gc.C) { 42 s.FakeJujuXDGDataHomeSuite.SetUpTest(c) 43 s.mockAPI = &fakeImageRemoveAPI{} 44 s.PatchValue(cachedimages.GetRemoveImageAPI, func(_ *cachedimages.CachedImagesCommandBase) (cachedimages.RemoveImageAPI, error) { 45 return s.mockAPI, nil 46 }) 47 } 48 49 func runRemoveCommand(c *gc.C, args ...string) (*cmd.Context, error) { 50 return cmdtesting.RunCommand(c, cachedimages.NewRemoveCommandForTest(jujuclienttesting.MinimalStore()), args...) 51 } 52 53 func (s *removeImageCommandSuite) TestRemoveImage(c *gc.C) { 54 _, err := runRemoveCommand(c, "--kind", "lxd", "--series", "trusty", "--arch", "amd64") 55 c.Assert(err, jc.ErrorIsNil) 56 c.Assert(s.mockAPI.kind, gc.Equals, "lxd") 57 c.Assert(s.mockAPI.series, gc.Equals, "trusty") 58 c.Assert(s.mockAPI.arch, gc.Equals, "amd64") 59 } 60 61 func (*removeImageCommandSuite) TestTooManyArgs(c *gc.C) { 62 _, err := runRemoveCommand(c, "--kind", "lxd", "--series", "trusty", "--arch", "amd64", "bad") 63 c.Assert(err, gc.ErrorMatches, `unrecognized args: \["bad"\]`) 64 } 65 66 func (*removeImageCommandSuite) TestKindRequired(c *gc.C) { 67 _, err := runRemoveCommand(c, "--series", "trusty", "--arch", "amd64", "bad") 68 c.Assert(err, gc.ErrorMatches, `image kind must be specified`) 69 } 70 71 func (*removeImageCommandSuite) TestSeriesRequired(c *gc.C) { 72 _, err := runRemoveCommand(c, "--kind", "lxd", "--arch", "amd64", "bad") 73 c.Assert(err, gc.ErrorMatches, `image series must be specified`) 74 } 75 76 func (*removeImageCommandSuite) TestArchRequired(c *gc.C) { 77 _, err := runRemoveCommand(c, "--kind", "lxd", "--series", "trusty", "bad") 78 c.Assert(err, gc.ErrorMatches, `image architecture must be specified`) 79 }