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