github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/cmd/juju/environment/share_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package environment_test 5 6 import ( 7 "github.com/juju/cmd" 8 "github.com/juju/names" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/apiserver/params" 13 "github.com/juju/juju/cmd/envcmd" 14 "github.com/juju/juju/cmd/juju/environment" 15 "github.com/juju/juju/testing" 16 ) 17 18 type shareSuite struct { 19 fakeEnvSuite 20 } 21 22 var _ = gc.Suite(&shareSuite{}) 23 24 func (s *shareSuite) run(c *gc.C, args ...string) (*cmd.Context, error) { 25 command := environment.NewShareCommand(s.fake) 26 return testing.RunCommand(c, envcmd.Wrap(command), args...) 27 } 28 29 func (s *shareSuite) TestInit(c *gc.C) { 30 shareCmd := &environment.ShareCommand{} 31 err := testing.InitCommand(shareCmd, []string{}) 32 c.Assert(err, gc.ErrorMatches, "no users specified") 33 34 err = testing.InitCommand(shareCmd, []string{"bob@local", "sam"}) 35 c.Assert(err, jc.ErrorIsNil) 36 37 c.Assert(shareCmd.Users[0], gc.Equals, names.NewUserTag("bob@local")) 38 c.Assert(shareCmd.Users[1], gc.Equals, names.NewUserTag("sam")) 39 40 err = testing.InitCommand(shareCmd, []string{"not valid/0"}) 41 c.Assert(err, gc.ErrorMatches, `invalid username: "not valid/0"`) 42 } 43 44 func (s *shareSuite) TestPassesValues(c *gc.C) { 45 sam := names.NewUserTag("sam") 46 ralph := names.NewUserTag("ralph") 47 48 _, err := s.run(c, "sam", "ralph") 49 c.Assert(err, jc.ErrorIsNil) 50 c.Assert(s.fake.addUsers, jc.DeepEquals, []names.UserTag{sam, ralph}) 51 } 52 53 func (s *shareSuite) TestBlockShare(c *gc.C) { 54 s.fake.err = ¶ms.Error{Code: params.CodeOperationBlocked} 55 _, err := s.run(c, "sam") 56 c.Assert(err, gc.Equals, cmd.ErrSilent) 57 c.Check(c.GetTestLog(), jc.Contains, "To unblock changes") 58 }