github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/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  	"github.com/juju/names/v5"
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/core/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  func (s *ControllerUserSuite) TestDefaultAccessControllerUser(c *gc.C) {
    23  	user := s.Factory.MakeUser(c,
    24  		&factory.UserParams{
    25  			Name: "validusername",
    26  		})
    27  	_ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"})
    28  	t := user.Tag()
    29  	userTag := t.(names.UserTag)
    30  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    31  	controllerUser, err := s.State.UserAccess(userTag, ctag)
    32  	c.Assert(err, jc.ErrorIsNil)
    33  	c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess)
    34  }
    35  
    36  func (s *ControllerUserSuite) TestSetAccessControllerUser(c *gc.C) {
    37  	user := s.Factory.MakeUser(c,
    38  		&factory.UserParams{
    39  			Name: "validusername",
    40  		})
    41  	_ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"})
    42  	t := user.Tag()
    43  	userTag := t.(names.UserTag)
    44  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    45  	controllerUser, err := s.State.UserAccess(userTag, ctag)
    46  	c.Assert(err, jc.ErrorIsNil)
    47  	c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess)
    48  
    49  	s.State.SetUserAccess(userTag, ctag, permission.SuperuserAccess)
    50  
    51  	controllerUser, err = s.State.UserAccess(user.UserTag(), ctag)
    52  	c.Assert(err, jc.ErrorIsNil)
    53  	c.Assert(controllerUser.Access, gc.Equals, permission.SuperuserAccess)
    54  }
    55  
    56  func (s *ControllerUserSuite) TestRemoveControllerUser(c *gc.C) {
    57  	user := s.Factory.MakeUser(c, &factory.UserParams{Name: "validUsername"})
    58  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    59  	_, err := s.State.UserAccess(user.UserTag(), ctag)
    60  	c.Assert(err, jc.ErrorIsNil)
    61  
    62  	err = s.State.RemoveUserAccess(user.UserTag(), ctag)
    63  	c.Assert(err, jc.ErrorIsNil)
    64  
    65  	_, err = s.State.UserAccess(user.UserTag(), ctag)
    66  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
    67  }
    68  
    69  func (s *ControllerUserSuite) TestRemoveControllerUserSucceeds(c *gc.C) {
    70  	user := s.Factory.MakeUser(c, &factory.UserParams{})
    71  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    72  	err := s.State.RemoveUserAccess(user.UserTag(), ctag)
    73  	c.Assert(err, jc.ErrorIsNil)
    74  }
    75  
    76  func (s *ControllerUserSuite) TestRemoveControllerUserFails(c *gc.C) {
    77  	user := s.Factory.MakeUser(c, &factory.UserParams{})
    78  	ctag := names.NewControllerTag(s.State.ControllerUUID())
    79  	err := s.State.RemoveUserAccess(user.UserTag(), ctag)
    80  	c.Assert(err, jc.ErrorIsNil)
    81  	err = s.State.RemoveUserAccess(user.UserTag(), ctag)
    82  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
    83  }