1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
8
"github.com/juju/names"
9
jc "github.com/juju/testing/checkers"
10
gc "gopkg.in/check.v1"
12
"github.com/juju/juju/apiserver/params"
13
"github.com/juju/juju/cmd/juju/model"
14
"github.com/juju/juju/testing"
17
type shareSuite struct {
21
var _ = gc.Suite(&shareSuite{})
23
func (s *shareSuite) run(c *gc.C, args ...string) (*cmd.Context, error) {
24
command, _ := model.NewShareCommandForTest(s.fake)
25
return testing.RunCommand(c, command, args...)
28
func (s *shareSuite) TestInit(c *gc.C) {
29
wrappedCmd, shareCmd := model.NewShareCommandForTest(s.fake)
30
err := testing.InitCommand(wrappedCmd, []string{})
31
c.Assert(err, gc.ErrorMatches, "no users specified")
33
err = testing.InitCommand(wrappedCmd, []string{"bob@local", "sam"})
34
c.Assert(err, jc.ErrorIsNil)
36
c.Assert(shareCmd.Users[0], gc.Equals, names.NewUserTag("bob@local"))
37
c.Assert(shareCmd.Users[1], gc.Equals, names.NewUserTag("sam"))
39
err = testing.InitCommand(wrappedCmd, []string{"not valid/0"})
40
c.Assert(err, gc.ErrorMatches, `invalid username: "not valid/0"`)
43
func (s *shareSuite) TestPassesValues(c *gc.C) {
44
sam := names.NewUserTag("sam")
45
ralph := names.NewUserTag("ralph")
47
_, err := s.run(c, "sam", "ralph")
48
c.Assert(err, jc.ErrorIsNil)
49
c.Assert(s.fake.addUsers, jc.DeepEquals, []names.UserTag{sam, ralph})
52
func (s *shareSuite) TestBlockShare(c *gc.C) {
53
s.fake.err = ¶ms.Error{Code: params.CodeOperationBlocked}
54
_, err := s.run(c, "sam")
55
c.Assert(err, gc.Equals, cmd.ErrSilent)
56
c.Check(c.GetTestLog(), jc.Contains, "To unblock changes")