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  }