github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/state/api/usermanager/client_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package usermanager_test 5 6 import ( 7 gc "launchpad.net/gocheck" 8 9 jujutesting "github.com/juju/juju/juju/testing" 10 "github.com/juju/juju/state" 11 "github.com/juju/juju/state/api/params" 12 "github.com/juju/juju/state/api/usermanager" 13 ) 14 15 type usermanagerSuite struct { 16 jujutesting.JujuConnSuite 17 18 usermanager *usermanager.Client 19 } 20 21 var _ = gc.Suite(&usermanagerSuite{}) 22 23 func (s *usermanagerSuite) SetUpTest(c *gc.C) { 24 s.JujuConnSuite.SetUpTest(c) 25 s.usermanager = usermanager.NewClient(s.APIState) 26 c.Assert(s.usermanager, gc.NotNil) 27 } 28 29 func (s *usermanagerSuite) TestAddUser(c *gc.C) { 30 err := s.usermanager.AddUser("foobar", "Foo Bar", "password") 31 c.Assert(err, gc.IsNil) 32 _, err = s.State.User("foobar") 33 c.Assert(err, gc.IsNil) 34 } 35 36 func (s *usermanagerSuite) TestAddUserOldClient(c *gc.C) { 37 userArgs := params.EntityPasswords{ 38 Changes: []params.EntityPassword{{Tag: "foobar", Password: "password"}}, 39 } 40 results := new(params.ErrorResults) 41 // Here we explicitly call into the UserManager object using the base 42 // APIState so as to be able to call the AddUser method with a different 43 // type of argument. 44 err := s.APIState.Call("UserManager", "", "AddUser", userArgs, results) 45 c.Assert(err, gc.IsNil) 46 _, err = s.State.User("foobar") 47 c.Assert(err, gc.IsNil) 48 } 49 50 func (s *usermanagerSuite) TestRemoveUser(c *gc.C) { 51 err := s.usermanager.AddUser("foobar", "Foo Bar", "password") 52 c.Assert(err, gc.IsNil) 53 _, err = s.State.User("foobar") 54 c.Assert(err, gc.IsNil) 55 56 err = s.usermanager.RemoveUser("foobar") 57 c.Assert(err, gc.IsNil) 58 user, err := s.State.User("foobar") 59 c.Assert(user.IsDeactivated(), gc.Equals, true) 60 } 61 62 func (s *usermanagerSuite) TestAddExistingUser(c *gc.C) { 63 err := s.usermanager.AddUser("foobar", "Foo Bar", "password") 64 c.Assert(err, gc.IsNil) 65 66 // Try adding again 67 err = s.usermanager.AddUser("foobar", "Foo Bar", "password") 68 c.Assert(err, gc.ErrorMatches, "failed to create user: user already exists") 69 } 70 71 func (s *usermanagerSuite) TestCantRemoveAdminUser(c *gc.C) { 72 err := s.usermanager.RemoveUser(state.AdminUser) 73 c.Assert(err, gc.ErrorMatches, "Failed to remove user: Can't deactivate admin user") 74 }