github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/cmd/juju/environment/unshare_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 unshareSuite struct { 19 fakeEnvSuite 20 } 21 22 var _ = gc.Suite(&unshareSuite{}) 23 24 func (s *unshareSuite) run(c *gc.C, args ...string) (*cmd.Context, error) { 25 command := environment.NewUnshareCommand(s.fake) 26 return testing.RunCommand(c, envcmd.Wrap(command), args...) 27 } 28 29 func (s *unshareSuite) TestInit(c *gc.C) { 30 unshareCmd := &environment.UnshareCommand{} 31 err := testing.InitCommand(unshareCmd, []string{}) 32 c.Assert(err, gc.ErrorMatches, "no users specified") 33 34 err = testing.InitCommand(unshareCmd, []string{"not valid/0"}) 35 c.Assert(err, gc.ErrorMatches, `invalid username: "not valid/0"`) 36 37 err = testing.InitCommand(unshareCmd, []string{"bob@local", "sam"}) 38 c.Assert(err, jc.ErrorIsNil) 39 40 c.Assert(unshareCmd.Users[0], gc.Equals, names.NewUserTag("bob@local")) 41 c.Assert(unshareCmd.Users[1], gc.Equals, names.NewUserTag("sam")) 42 } 43 44 func (s *unshareSuite) 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.removeUsers, jc.DeepEquals, []names.UserTag{sam, ralph}) 51 } 52 53 func (s *unshareSuite) TestBlockUnShare(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 }