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 }