github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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 16 "github.com/juju/juju/testing" 17 ) 18 19 type shareSuite struct { 20 fakeEnvSuite 21 } 22 23 var _ = gc.Suite(&shareSuite{}) 24 25 func (s *shareSuite) run(c *gc.C, args ...string) (*cmd.Context, error) { 26 command := environment.NewShareCommand(s.fake) 27 return testing.RunCommand(c, envcmd.Wrap(command), args...) 28 } 29 30 func (s *shareSuite) TestInit(c *gc.C) { 31 shareCmd := &environment.ShareCommand{} 32 err := testing.InitCommand(shareCmd, []string{}) 33 c.Assert(err, gc.ErrorMatches, "no users specified") 34 35 err = testing.InitCommand(shareCmd, []string{"bob@local", "sam"}) 36 c.Assert(err, jc.ErrorIsNil) 37 38 c.Assert(shareCmd.Users[0], gc.Equals, names.NewUserTag("bob@local")) 39 c.Assert(shareCmd.Users[1], gc.Equals, names.NewUserTag("sam")) 40 41 err = testing.InitCommand(shareCmd, []string{"not valid/0"}) 42 c.Assert(err, gc.ErrorMatches, `invalid username: "not valid/0"`) 43 } 44 45 func (s *shareSuite) TestPassesValues(c *gc.C) { 46 sam := names.NewUserTag("sam") 47 ralph := names.NewUserTag("ralph") 48 49 _, err := s.run(c, "sam", "ralph") 50 c.Assert(err, jc.ErrorIsNil) 51 c.Assert(s.fake.addUsers, jc.DeepEquals, []names.UserTag{sam, ralph}) 52 } 53 54 func (s *shareSuite) TestBlockShare(c *gc.C) { 55 s.fake.err = ¶ms.Error{Code: params.CodeOperationBlocked} 56 _, err := s.run(c, "sam") 57 c.Assert(err, gc.Equals, cmd.ErrSilent) 58 c.Check(c.GetTestLog(), jc.Contains, "To unblock changes") 59 }