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  }