1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
12
jc "github.com/juju/testing/checkers"
13
gc "gopkg.in/check.v1"
14
goyaml "gopkg.in/yaml.v2"
16
"github.com/juju/juju/testing"
17
"github.com/juju/juju/worker/uniter/runner/jujuc"
20
type storageGetSuite struct {
24
var _ = gc.Suite(&storageGetSuite{})
26
var storageGetTests = []struct {
31
{[]string{"--format", "yaml"}, formatYaml, storageAttributes},
32
{[]string{"--format", "json"}, formatJson, storageAttributes},
33
{[]string{}, formatYaml, storageAttributes},
34
{[]string{"location"}, -1, "/dev/sda\n"},
37
func (s *storageGetSuite) TestOutputFormatKey(c *gc.C) {
38
for i, t := range storageGetTests {
39
c.Logf("test %d: %#v", i, t.args)
40
hctx, _ := s.newHookContext()
41
com, err := jujuc.NewCommand(hctx, cmdString("storage-get"))
42
c.Assert(err, jc.ErrorIsNil)
43
ctx := testing.Context(c)
44
code := cmd.Main(com, ctx, t.args)
45
c.Assert(code, gc.Equals, 0)
46
c.Assert(bufferString(ctx.Stderr), gc.Equals, "")
49
var outMap map[string]interface{}
52
c.Assert(goyaml.Unmarshal(bufferBytes(ctx.Stdout), &outMap), gc.IsNil)
55
c.Assert(json.Unmarshal(bufferBytes(ctx.Stdout), &outMap), gc.IsNil)
58
out = string(bufferBytes(ctx.Stdout))
60
c.Assert(out, gc.DeepEquals, t.out)
64
func (s *storageGetSuite) TestHelp(c *gc.C) {
65
hctx, _ := s.newHookContext()
66
com, err := jujuc.NewCommand(hctx, cmdString("storage-get"))
67
c.Assert(err, jc.ErrorIsNil)
68
ctx := testing.Context(c)
69
code := cmd.Main(com, ctx, []string{"--help"})
70
c.Assert(code, gc.Equals, 0)
71
c.Assert(bufferString(ctx.Stdout), gc.Equals, `Usage: storage-get [options] [<key>]
74
print information for storage instance with specified id
78
Specify output format (json|smart|yaml)
80
Specify an output file
82
specify a storage instance by id
85
When no <key> is supplied, all keys values are printed.
87
c.Assert(bufferString(ctx.Stderr), gc.Equals, "")
90
func (s *storageGetSuite) TestOutputPath(c *gc.C) {
91
hctx, _ := s.newHookContext()
92
com, err := jujuc.NewCommand(hctx, cmdString("storage-get"))
93
c.Assert(err, jc.ErrorIsNil)
94
ctx := testing.Context(c)
95
code := cmd.Main(com, ctx, []string{"--format", "yaml", "--output", "some-file", "-s", "data/0"})
96
c.Assert(code, gc.Equals, 0)
97
c.Assert(bufferString(ctx.Stderr), gc.Equals, "")
98
c.Assert(bufferString(ctx.Stdout), gc.Equals, "")
99
content, err := ioutil.ReadFile(filepath.Join(ctx.Dir, "some-file"))
100
c.Assert(err, jc.ErrorIsNil)
102
var out map[string]interface{}
103
c.Assert(goyaml.Unmarshal(content, &out), gc.IsNil)
104
c.Assert(out, gc.DeepEquals, storageAttributes)