github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/cmd/juju/user/disenable_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package user_test
     5  
     6  import (
     7  	"github.com/juju/cmd"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/cmd/envcmd"
    12  	"github.com/juju/juju/cmd/juju/user"
    13  	"github.com/juju/juju/testing"
    14  )
    15  
    16  type DisableUserSuite struct {
    17  	BaseSuite
    18  	mock *mockDisenableUserAPI
    19  }
    20  
    21  var _ = gc.Suite(&DisableUserSuite{})
    22  
    23  func (s *DisableUserSuite) SetUpTest(c *gc.C) {
    24  	s.BaseSuite.SetUpTest(c)
    25  	s.mock = &mockDisenableUserAPI{}
    26  }
    27  
    28  type disenableCommand interface {
    29  	cmd.Command
    30  	Username() string
    31  }
    32  
    33  func (s *DisableUserSuite) testInit(c *gc.C, command disenableCommand) {
    34  	for i, test := range []struct {
    35  		args     []string
    36  		errMatch string
    37  		user     string
    38  		enable   bool
    39  	}{
    40  		{
    41  			errMatch: "no username supplied",
    42  		}, {
    43  			args:     []string{"username", "password"},
    44  			errMatch: `unrecognized args: \["password"\]`,
    45  		}, {
    46  			args: []string{"username"},
    47  			user: "username",
    48  		},
    49  	} {
    50  		c.Logf("test %d, args %v", i, test.args)
    51  		err := testing.InitCommand(command, test.args)
    52  		if test.errMatch == "" {
    53  			c.Assert(err, jc.ErrorIsNil)
    54  			c.Assert(command.Username(), gc.Equals, test.user)
    55  		} else {
    56  			c.Assert(err, gc.ErrorMatches, test.errMatch)
    57  		}
    58  	}
    59  }
    60  
    61  func (s *DisableUserSuite) TestInit(c *gc.C) {
    62  	s.testInit(c, &user.EnableCommand{})
    63  	s.testInit(c, &user.DisableCommand{})
    64  }
    65  
    66  func (s *DisableUserSuite) TestDisable(c *gc.C) {
    67  	username := "testing"
    68  	disableCommand := envcmd.WrapSystem(user.NewDisableCommand(s.mock))
    69  	_, err := testing.RunCommand(c, disableCommand, username)
    70  	c.Assert(err, jc.ErrorIsNil)
    71  	c.Assert(s.mock.disable, gc.Equals, username)
    72  }
    73  
    74  func (s *DisableUserSuite) TestEnable(c *gc.C) {
    75  	username := "testing"
    76  	enableCommand := envcmd.WrapSystem(user.NewEnableCommand(s.mock))
    77  	_, err := testing.RunCommand(c, enableCommand, username)
    78  	c.Assert(err, jc.ErrorIsNil)
    79  	c.Assert(s.mock.enable, gc.Equals, username)
    80  }
    81  
    82  type mockDisenableUserAPI struct {
    83  	enable  string
    84  	disable string
    85  }
    86  
    87  var _ user.DisenableUserAPI = (*mockDisenableUserAPI)(nil)
    88  
    89  func (m *mockDisenableUserAPI) Close() error {
    90  	return nil
    91  }
    92  
    93  func (m *mockDisenableUserAPI) EnableUser(username string) error {
    94  	m.enable = username
    95  	return nil
    96  }
    97  
    98  func (m *mockDisenableUserAPI) DisableUser(username string) error {
    99  	m.disable = username
   100  	return nil
   101  }