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  }