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 = &params.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  }