github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/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 mockDisableUserAPI
    19  }
    20  
    21  var _ = gc.Suite(&DisableUserSuite{})
    22  
    23  type disenableCommand interface {
    24  	cmd.Command
    25  	username() string
    26  }
    27  
    28  func (s *DisableUserSuite) disableUserCommand() cmd.Command {
    29  	return envcmd.Wrap(&user.DisableCommand{})
    30  }
    31  
    32  func (s *DisableUserSuite) enableUserCommand() cmd.Command {
    33  	return envcmd.Wrap(&user.EnableCommand{})
    34  }
    35  
    36  func (s *DisableUserSuite) SetUpTest(c *gc.C) {
    37  	s.BaseSuite.SetUpTest(c)
    38  	s.PatchValue(user.GetDisableUserAPI, func(*user.DisenableUserBase) (user.DisenableUserAPI, error) {
    39  		return &s.mock, nil
    40  	})
    41  }
    42  
    43  func (s *DisableUserSuite) testInit(c *gc.C, command user.DisenableCommand) {
    44  	for i, test := range []struct {
    45  		args     []string
    46  		errMatch string
    47  		user     string
    48  		enable   bool
    49  	}{
    50  		{
    51  			errMatch: "no username supplied",
    52  		}, {
    53  			args:     []string{"username", "password"},
    54  			errMatch: `unrecognized args: \["password"\]`,
    55  		}, {
    56  			args: []string{"username"},
    57  			user: "username",
    58  		},
    59  	} {
    60  		c.Logf("test %d, args %v", i, test.args)
    61  		err := testing.InitCommand(command, test.args)
    62  		if test.errMatch == "" {
    63  			c.Assert(err, jc.ErrorIsNil)
    64  			c.Assert(command.Username(), gc.Equals, test.user)
    65  		} else {
    66  			c.Assert(err, gc.ErrorMatches, test.errMatch)
    67  		}
    68  	}
    69  }
    70  
    71  func (s *DisableUserSuite) TestInit(c *gc.C) {
    72  	s.testInit(c, &user.EnableCommand{})
    73  	s.testInit(c, &user.DisableCommand{})
    74  }
    75  
    76  func (s *DisableUserSuite) TestDisable(c *gc.C) {
    77  	username := "testing"
    78  	_, err := testing.RunCommand(c, s.disableUserCommand(), username)
    79  	c.Assert(err, jc.ErrorIsNil)
    80  	c.Assert(s.mock.disable, gc.Equals, username)
    81  }
    82  
    83  func (s *DisableUserSuite) TestEnable(c *gc.C) {
    84  	username := "testing"
    85  	_, err := testing.RunCommand(c, s.enableUserCommand(), username)
    86  	c.Assert(err, jc.ErrorIsNil)
    87  	c.Assert(s.mock.enable, gc.Equals, username)
    88  }
    89  
    90  type mockDisableUserAPI struct {
    91  	enable  string
    92  	disable string
    93  }
    94  
    95  var _ user.DisenableUserAPI = (*mockDisableUserAPI)(nil)
    96  
    97  func (m *mockDisableUserAPI) Close() error {
    98  	return nil
    99  }
   100  
   101  func (m *mockDisableUserAPI) EnableUser(username string) error {
   102  	m.enable = username
   103  	return nil
   104  }
   105  
   106  func (m *mockDisableUserAPI) DisableUser(username string) error {
   107  	m.disable = username
   108  	return nil
   109  }