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 }