github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/cmd/juju/cachedimages/delete_test.go (about) 1 // Copyright 2015 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 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/cmd/envcmd" 12 "github.com/juju/juju/cmd/juju/cachedimages" 13 "github.com/juju/juju/testing" 14 ) 15 16 type deleteImageCommandSuite struct { 17 testing.FakeJujuHomeSuite 18 mockAPI *fakeImageDeleteAPI 19 } 20 21 var _ = gc.Suite(&deleteImageCommandSuite{}) 22 23 type fakeImageDeleteAPI struct { 24 kind string 25 series string 26 arch string 27 } 28 29 func (*fakeImageDeleteAPI) Close() error { 30 return nil 31 } 32 33 func (f *fakeImageDeleteAPI) DeleteImage(kind, series, arch string) error { 34 f.kind = kind 35 f.series = series 36 f.arch = arch 37 return nil 38 } 39 40 func (s *deleteImageCommandSuite) SetUpTest(c *gc.C) { 41 s.FakeJujuHomeSuite.SetUpTest(c) 42 s.mockAPI = &fakeImageDeleteAPI{} 43 s.PatchValue(cachedimages.GetDeleteImageAPI, func(c *cachedimages.DeleteCommand) (cachedimages.DeleteImageAPI, error) { 44 return s.mockAPI, nil 45 }) 46 } 47 48 func runDeleteCommand(c *gc.C, args ...string) (*cmd.Context, error) { 49 return testing.RunCommand(c, envcmd.Wrap(&cachedimages.DeleteCommand{}), args...) 50 } 51 52 func (s *deleteImageCommandSuite) TestDeleteImage(c *gc.C) { 53 _, err := runDeleteCommand(c, "--kind", "lxc", "--series", "trusty", "--arch", "amd64") 54 c.Assert(err, jc.ErrorIsNil) 55 c.Assert(s.mockAPI.kind, gc.Equals, "lxc") 56 c.Assert(s.mockAPI.series, gc.Equals, "trusty") 57 c.Assert(s.mockAPI.arch, gc.Equals, "amd64") 58 } 59 60 func (*deleteImageCommandSuite) TestTooManyArgs(c *gc.C) { 61 _, err := runDeleteCommand(c, "--kind", "lxc", "--series", "trusty", "--arch", "amd64", "bad") 62 c.Assert(err, gc.ErrorMatches, `unrecognized args: \["bad"\]`) 63 } 64 65 func (*deleteImageCommandSuite) TestKindRequired(c *gc.C) { 66 _, err := runDeleteCommand(c, "--series", "trusty", "--arch", "amd64", "bad") 67 c.Assert(err, gc.ErrorMatches, `image kind must be specified`) 68 } 69 70 func (*deleteImageCommandSuite) TestSeriesRequired(c *gc.C) { 71 _, err := runDeleteCommand(c, "--kind", "lxc", "--arch", "amd64", "bad") 72 c.Assert(err, gc.ErrorMatches, `image series must be specified`) 73 } 74 75 func (*deleteImageCommandSuite) TestArchRequired(c *gc.C) { 76 _, err := runDeleteCommand(c, "--kind", "lxc", "--series", "trusty", "bad") 77 c.Assert(err, gc.ErrorMatches, `image architecture must be specified`) 78 }