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 }