github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/state/controlleruser_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package state_test
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  	"gopkg.in/juju/names.v2"
    11  
    12  	"github.com/juju/juju/permission"
    13  	"github.com/juju/juju/testing/factory"
    14  )
    15  
    16  type ControllerUserSuite struct {
    17  	ConnSuite
    18  }
    19  
    20  var _ = gc.Suite(&ControllerUserSuite{})
    21  
    22  type accessAwareUser interface {
    23  	Access() permission.Access
    24  }
    25  
    26  func (s *ControllerUserSuite) TestDefaultAccessControllerUser(c *gc.C) {
    27  	user := s.Factory.MakeUser(c,
    28  		&factory.UserParams{
    29  			Name: "validusername",
    30  		})
    31  	_ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"})
    32  	t := user.Tag()
    33  	userTag := t.(names.UserTag)
    34  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    35  	controllerUser, err := s.State.UserAccess(userTag, ctag)
    36  	c.Assert(err, jc.ErrorIsNil)
    37  	c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess)
    38  }
    39  
    40  func (s *ControllerUserSuite) TestSetAccessControllerUser(c *gc.C) {
    41  	user := s.Factory.MakeUser(c,
    42  		&factory.UserParams{
    43  			Name: "validusername",
    44  		})
    45  	_ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"})
    46  	t := user.Tag()
    47  	userTag := t.(names.UserTag)
    48  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    49  	controllerUser, err := s.State.UserAccess(userTag, ctag)
    50  	c.Assert(err, jc.ErrorIsNil)
    51  	c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess)
    52  
    53  	s.State.SetUserAccess(userTag, ctag, permission.AddModelAccess)
    54  
    55  	controllerUser, err = s.State.UserAccess(user.UserTag(), ctag)
    56  	c.Assert(controllerUser.Access, gc.Equals, permission.AddModelAccess)
    57  }
    58  
    59  func (s *ControllerUserSuite) TestRemoveControllerUser(c *gc.C) {
    60  	user := s.Factory.MakeUser(c, &factory.UserParams{Name: "validUsername"})
    61  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    62  	_, err := s.State.UserAccess(user.UserTag(), ctag)
    63  	c.Assert(err, jc.ErrorIsNil)
    64  
    65  	err = s.State.RemoveUserAccess(user.UserTag(), ctag)
    66  	c.Assert(err, jc.ErrorIsNil)
    67  
    68  	_, err = s.State.UserAccess(user.UserTag(), ctag)
    69  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
    70  }
    71  
    72  func (s *ControllerUserSuite) TestRemoveControllerUserSucceeds(c *gc.C) {
    73  	user := s.Factory.MakeUser(c, &factory.UserParams{})
    74  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    75  	err := s.State.RemoveUserAccess(user.UserTag(), ctag)
    76  	c.Assert(err, jc.ErrorIsNil)
    77  }
    78  
    79  func (s *ControllerUserSuite) TestRemoveControllerUserFails(c *gc.C) {
    80  	user := s.Factory.MakeUser(c, &factory.UserParams{})
    81  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    82  	err := s.State.RemoveUserAccess(user.UserTag(), ctag)
    83  	c.Assert(err, jc.ErrorIsNil)
    84  	err = s.State.RemoveUserAccess(user.UserTag(), ctag)
    85  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
    86  }