github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/cachedimages/list_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  	"time"
     8  
     9  	"github.com/juju/cmd"
    10  	"github.com/juju/cmd/cmdtesting"
    11  	jc "github.com/juju/testing/checkers"
    12  	gc "gopkg.in/check.v1"
    13  
    14  	"github.com/juju/juju/apiserver/params"
    15  	"github.com/juju/juju/cmd/juju/cachedimages"
    16  	"github.com/juju/juju/jujuclient/jujuclienttesting"
    17  	"github.com/juju/juju/testing"
    18  )
    19  
    20  type listImagesCommandSuite struct {
    21  	testing.FakeJujuXDGDataHomeSuite
    22  	mockAPI *fakeImagesListAPI
    23  }
    24  
    25  var _ = gc.Suite(&listImagesCommandSuite{})
    26  
    27  type fakeImagesListAPI struct{}
    28  
    29  func (*fakeImagesListAPI) Close() error {
    30  	return nil
    31  }
    32  
    33  func (f *fakeImagesListAPI) ListImages(kind, series, arch string) ([]params.ImageMetadata, error) {
    34  	if kind != "lxd" {
    35  		return nil, nil
    36  	}
    37  	result := []params.ImageMetadata{
    38  		{
    39  			Kind:    kind,
    40  			Series:  series,
    41  			Arch:    arch,
    42  			URL:     "http://image",
    43  			Created: time.Date(2015, 1, 1, 0, 0, 0, 0, time.UTC),
    44  		},
    45  	}
    46  	return result, nil
    47  }
    48  
    49  func (s *listImagesCommandSuite) SetUpTest(c *gc.C) {
    50  	s.FakeJujuXDGDataHomeSuite.SetUpTest(c)
    51  	s.mockAPI = &fakeImagesListAPI{}
    52  	s.PatchValue(cachedimages.GetListImagesAPI, func(_ *cachedimages.CachedImagesCommandBase) (cachedimages.ListImagesAPI, error) {
    53  		return s.mockAPI, nil
    54  	})
    55  }
    56  
    57  func runListCommand(c *gc.C, args ...string) (*cmd.Context, error) {
    58  	return cmdtesting.RunCommand(c, cachedimages.NewListCommandForTest(jujuclienttesting.MinimalStore()), args...)
    59  }
    60  
    61  func (*listImagesCommandSuite) TestListImagesNone(c *gc.C) {
    62  	context, err := runListCommand(c, "--kind", "kvm")
    63  	c.Assert(err, jc.ErrorIsNil)
    64  	c.Assert(cmdtesting.Stderr(context), gc.Equals, "No images to display.\n")
    65  }
    66  
    67  func (*listImagesCommandSuite) TestListImagesFormatJson(c *gc.C) {
    68  	context, err := runListCommand(c, "--format", "json", "--kind", "lxd", "--series", "trusty", "--arch", "amd64")
    69  	c.Assert(err, jc.ErrorIsNil)
    70  	c.Assert(cmdtesting.Stdout(context), gc.Equals, "Cached images:\n["+
    71  		`{"kind":"lxd","series":"trusty","arch":"amd64","source-url":"http://image","created":"Thu, 01 Jan 2015 00:00:00 UTC"}`+
    72  		"]\n")
    73  }
    74  
    75  func (*listImagesCommandSuite) TestListImagesFormatYaml(c *gc.C) {
    76  	context, err := runListCommand(c, "--format", "yaml", "--kind", "lxd", "--series", "trusty", "--arch", "amd64")
    77  	c.Assert(err, jc.ErrorIsNil)
    78  	c.Assert(cmdtesting.Stdout(context), gc.Equals, "Cached images:\n"+
    79  		"- kind: lxd\n"+
    80  		"  series: trusty\n"+
    81  		"  arch: amd64\n"+
    82  		"  source-url: http://image\n"+
    83  		"  created: Thu, 01 Jan 2015 00:00:00 UTC\n")
    84  }
    85  
    86  func (*listImagesCommandSuite) TestTooManyArgs(c *gc.C) {
    87  	_, err := runListCommand(c, "bad")
    88  	c.Assert(err, gc.ErrorMatches, `unrecognized args: \["bad"\]`)
    89  }